我有一个查询,这样我需要得到复杂的SQL查询,一对多的关系
- 具体的狗
- 与该狗
- 谁张贴每条评论的用户所有评论
- 所有链接到狗
- 谁发布各环节的用户的图像
我已经尝试了几件事情,并且无法弄清楚如何使用它。以下是我已经(冷凝,你没有经历过这一切涉水):
SELECT s.dog_id,
s.name,
c.comment,
c.date_added AS comment_date_added,
u.username AS comment_username,
u.user_id AS comment_user_id,
l.link AS link,
l.date_added AS link_date_added,
u2.username AS link_username,
u2.user_id AS link_user_id
FROM dogs AS d
LEFT JOIN comments AS c
ON c.dog_id = d.dog_id
LEFT JOIN users AS u
ON c.user_id = u.user_id
LEFT JOIN links AS l
ON l.dog_id = d.dog_id
LEFT JOIN users AS u2
ON l.user_id = u2.user_id
WHERE d.dog_id = '1'
这是八九不离十接近的工作,但它只会返回我的第一个评论,第一个环节都作为一个与我所要求的所有信息大阵。每条狗都有多条评论和链接,所以我需要它给我所有的评论和所有链接。理想情况下,它会返回一个包含dog_id,name,comments(一系列评论),链接(一系列链接)的对象,然后评论会有一堆评论,date_added,username和user_id,链接会有一个链接链接,date_added,用户名和user_id。即使没有链接或评论,它也必须工作。
最近我学会了mySQL的基础知识,但是这远远超过了我的头脑。任何帮助将是美好的。谢谢!
+1 - 一个单一的查询可以工作,可能会快一点,但使用三个较小的查询将大大简化事情。 – 2010-04-13 21:24:52
无论如何都让我的生活更轻松。谢谢! – Ethan 2010-04-13 23:27:42