0

感谢您花时间帮助解决此问题;)我是 SQL 新手,希望在一个查询中解决一些问题,但我不知道该怎么做。-

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

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

4

3 回答 3

4

了解SQL 连接

SELECT *
FROM   products
  LEFT JOIN comments ON products.id = comments.pid
  LEFT JOIN user     ON user.id     = comments.uid
于 2012-06-30T08:17:29.887 回答
1

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

解释

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

我在这里创建了三个表

  • 产品
  • 用户
  • 注释

并且之间存在关系集

  1. 产品和评论表 - 使用 product.id 和 comments.prod_id
  2. 用户和评论表 - 使用 user.id 和 comments.user_id

现在您可以使用 join 过滤结果

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

于 2012-06-30T09:02:15.943 回答
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;
于 2012-06-30T08:16:58.897 回答