- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的学校开发一种社交网络。
数据库中有两个表有两个表:
users
,其中包含 (varchar) username
和 (json) friends
—其中包含用户的好友用户名列表 —并且posts
,其中包含 (varchar) publisher
field 。 如何编写一个查询来返回发布者与给定用户是好友的所有帖子?
帖子示例:
| id | publisher | originalPublisher | postdate | content | likes |
| 113 | pvaqueiroz | NULL | 2017-03-13 | {"contentType":"text","content":"DAB \\o\\","attatchments":[]} | 0 |
用户示例:
| id | username | password | email | fullname | likes | friends | profpic |
| 1 | pvaqueiroz | 827ccb0eea8a706c4c34a16891f84e7b | pvaqueiroz@gmail.com | Paulo Queiroz | [31, 30, 0, 63, 68, 85, 89, 91, 92, 109, 114] | ["hacker", "girassol_l", "Dment", "Leel", "Mr Dibre"] | /carlos/posts_res/d11109ac342482457f87611483d661a6.jpeg |
最佳答案
这是正确的解决方案。
创建语句(跳过字段,因为不需要解释)
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`email` VARCHAR(45) NULL,
`password` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
CREATE TABLE `posts` (
`id` INT NOT NULL AUTO_INCREMENT,
`post` VARCHAR(45) NULL,
`user_id` INT UNSIGNED NULL,
PRIMARY KEY (`id`),
INDEX `fk_posts_1_idx` (`user_id` ASC),
CONSTRAINT `fk_posts_1`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
CREATE TABLE `friends` (
`user_id` INT UNSIGNED NULL,
`friend_id` INT UNSIGNED NULL,
UNIQUE INDEX `user_friend_idx` (`user_id` ASC, `friend_id` ASC),
INDEX `fk_friends_f_users_idx` (`friend_id` ASC),
CONSTRAINT `fk_friends_u_users`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_friends_f_users`
FOREIGN KEY (`friend_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
每次向用户添加一个fried时,您只需在friends
表中记录一对ID
查询将是:
-- Selecting user friends
SELECT * FROM friends f
JOIN users u ON u.id = f.friend_id
WHERE f.user_id = 1 -- Id of user you need friends for
-- Selecting friends posts
SELECT * FROM friends f
JOIN posts p ON p.user_id = f.friend_id
WHERE f.user_id = 1 -- Id of user you need friends' posts for
关于mysql - JSON_CONTAINS 跨表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42798755/
目前使用 MYSQL 5.7,即将迁移到 8.0。 我们的数据库中有一个 json 字段,其值如下所示: [ { "first_name":"bob", "last_name"
我有一个包含 json 列的表,我在其中存储了契约(Contract)类型的 ID 列表。我想在 contract_types 表上进行联接,以便我可以获得契约(Contract)类型名称的串联列表及
我有这个代码: (SELECT COUNT(streams.id) FROM streams WHERE JSON_CONTAINS(streams.server, '[\"servers.id"\"
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有一个像 这样的 json 数组 { "response":[ { "Rate Lock":"Yes", "Loan Amount":"1
我正在使用以下查询来搜索名为“JavaScript”的 json 值 当我运行查询时,我得到 0 个结果 这是我正在使用的插入命令 INSERT INTO admin_acc_mngmt_notes
我希望能够使用 json_contains 不区分大小写地“搜索” 这是 json 示例: [ { "title": "foo Bar", "author": "melaine"
使用 MySQL 5.7,我想知道 PostgreSQL 等价物 SELECT * FROM user_conversations WHERE JSON_CONTAINS(users, JSON_AR
在 MySQL 中,我使用 PHP 的 json_encode 将数据存储在“jsonValues”字段中: {"product_category":[[{"category":["28"]},{"p
我正在尝试选择 json 列中的 roles 属性包含任何值的所有列。 我试过的语句: SELECT * FROM components WHERE json->'$.roles' IN(1) 这甚至
我在 MySQL 数据库中有一个 JSON 字段,其中包含类似 [1,3,4,7] 的值。我希望能够轻松地从 PHP 变量提供另一个数组并确定是否存在任何重叠。我知道这个例子不起作用,但这是我想要做的
我有一个具有以下结构的表: select * from test_table; id |load_balancer_name |listener_descriptions
在我的 MySQL 数据库 (8.0.23) 上,我有一个 JSON 列是 multi value indexed .我想使用 QueryDSL 通过 JSON_CONTAINS 使用索引进行查询。我
我正在使用 MySQL 8 的新 JSON 功能,特别是多值索引。 我注意到有两种方法可以检查 JSON 数组是否包含给定值:MEMBER OF() 运算符和 JSON_CONTAINS() 函数。
我想要一个查询来返回表 minto_regsix_session 中所有条目的所有字段,这些条目在 'day' 字段中包含 2 的值。以下是表的 phpMyAdmin 的屏幕截图,包括包含 JSON
我有下表,其中在 JSON 整数数组上设置了多值索引: CREATE TABLE test ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, catIds
通过使用 (1) 我从 laravel 请求中获得了想要的结果。但是,一旦我将硬编码的“fish”切换为 $str = 'fish' 这样的变量,就会出现语法错误。 (1) $find = anima
我正在尝试运行以下程序: $driverID = 123; $query = 'SELECT * FROM cars WHERE JSON_CONTAINS(`data`, \'{"drivers":
因此,我在表格的一列中列出了“白名单”国家(例如 ['PT', 'US', 'UK', 'ES']),并且我想检查用户的国家(例如“美国”)是否在白名单中,以便向用户显示该行的内容。 我进行了搜索,发
我在查找带有参数为 JSON 格式的 where 子句的记录时遇到一些问题。例如,JSON 列的值类似于 ["1","2","3"]。当我运行 where JSON_CONTAINS(tags, '[
我是一名优秀的程序员,十分优秀!