我的MySql数据库中有两个表:
table #1: follows
follower | following
------------------------
john | dan
------------------------
peter | john
------------------------
peter | dan
------------------------
john | peter
------------------------
dan | peter
------------------------
table #2: questions
text | username
----------------------------
something | peter
----------------------------
something1 | dan
----------------------------
something2 | peter
----------------------------
something3 | john
假设我使用用户名“dan”登录该站点。
我希望看到我关注的人们最近提出的问题。在这种情况下,只有来自“彼得”的问题。
“follow”表包含某人记录的所有记录,“questions”表包含所有问题。
我知道MySql的基础知识,但我对MySql JOIN一无所知。 (< - 我想我需要加入来实现我的目标。)
我的问题:那我怎么能在PHP脚本中这样做呢?
答案 0 :(得分:3)
SELECT q.username, q.text
FROM follows f
INNER JOIN questions q
ON f.following = q.username
WHERE f.follower = 'dan'
答案 1 :(得分:1)
对数据库进行记录过滤效率更高,而不是将所有记录转储并在PHP脚本中进行。您的查询可以通过JOIN:
完成SELECT q.*
FROM questions q
JOIN follows f ON f.following = q.username
WHERE f.follower = 'dan'
或通过子查询
SELECT q.*
FROM questions q
WHERE q.username IN ( SELECT f.following
FROM follows f
WHERE f.follower = 'dan' )
(在您的问题范围之外,但您可能想要在表格中添加某种类型的唯一索引,因此如果您想删除某个特定问题或者想要删除您正在关注的人,那么请继续可以通过删除索引来实现,而不必指定字段组合来获取您的唯一记录。)
答案 2 :(得分:0)
- 使用USING子句的内部联接 选择 * 从内部加入b USING()
- 带ON子句的内连接 选择 * 从内部加入b 在一个。 = b。
尝试这种方式:)