SQL Select - >产品 - >评论 - >用户

时间:2012-06-30 08:12:33

标签: mysql sql

谢谢你有时间帮忙;) 我是SQL的新手,希望在一个查询中解决一些问题,我不知道该怎么做.-

基本上我有一个产品表,一个用户表和一个评论表,由products.id链接 - > comments.pid和user.id - > comments.uid,

我想知道创建一个查询的最佳做法是什么,并获得所有带有子评论的产品,包括用户名。

3 个答案:

答案 0 :(得分:4)

了解SQL joins

SELECT *
FROM   products
  LEFT JOIN comments ON products.id = comments.pid
  LEFT JOIN user     ON user.id     = comments.uid

答案 1 :(得分:1)

学习连接是解决此类问题的最佳方法

解释

我们在这里要做的是创建一个基于某些关系获取记录的虚拟表。

我在这里创建了三个表

  • 产品
  • 用户
  • 评论

并且

之间存在关系
  1. 产品和评论表 - 使用product.id和comments.prod_id
  2. 用户和评论表 - 使用user.id和comments.user_id
  3. 现在您可以使用联接来过滤结果

    SELECT product.id,user.name,comments.DATA FROM comments LEFT JOIN product ON comments.prod_id = product.id INNER JOIN USER ON comments.user_id = USER.id;

    或者如果您不想使用联接,您可以简单地创建一个关系 但请注意,使用连接是最好的方法

    SELECT product.id,USER.name,comments.DATA 
    FROM product,USER,comments
     WHERE product.id = comments.prod_id AND USER.id = comments.user_id;
    

    你可以在这里查看结果

    SqlFiddle

答案 2 :(得分:0)

您可以尝试使用 JOIN ,而不是

select p.id,u.name,c.data
from products as p,user as u,comment as c
where p.id = c.pid and u.id = c.uid;