MySQL的:连接两个简单的表
问题描述:
我有我的MySQL数据库的两个表: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
比方说,我在用的用户名“丹”的网站正在记录。
我希望看到由我遵循的人开始的最新问题。在这种情况下,只有来自“彼得”的问题。
“follow”表包含每个人记录的跟随,“questions”表包含所有问题。
我知道MySql基础知识,但我对MySql JOIN一无所知。 (< - 我想我需要JOIN来实现我的目标。)
我的问题:那么我怎么能在PHP脚本中做到这一点?
在此先感谢...
答
SELECT q.username, q.text
FROM follows f
INNER JOIN questions q
ON f.following = q.username
WHERE f.follower = 'dan'
答
这是更有效地做数据库上的记录过滤,而不是所有的记录下来倾销和做你的PHP脚本中。您的查询既可以使用来完成一个联接:
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')
(外你的问题的范围,但可能要某种类型的唯一索引添加到您的表,所以如果你想删除一个特定的问题或者删除一个你正在关注的人,你可以通过删除索引来实现,而不必指定字段组合来获得你的独特记录。)
答
- 使用USING子句 SELECT * FROM 一个INNER JOIN B USING()
- 与ON子句 SELECT * 内部联接从INNER JOIN B 上。 = b。
试试这种方法:)
啊......谢谢乔!这是工作! ;)我想有问题,但它是如何工作的?我在MySql JOIN中是一个初学者,所以如果我想稍后修改脚本,我不知道该怎么做!那么你能简单地解释一下它是什么吗?谢谢... :) – Akos 2012-02-25 09:14:47