0

これを手伝ってくれてありがとう;)私はSQLが初めてで、たった1つのクエリで何かを解決したいと思っています。その方法がわかりません.-

基本的に、製品のテーブル、ユーザーのテーブル、コメントのテーブルがあり、 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

結合を学習することは、そのような問題を解決するための最良の方法です

説明

ここでやろうとしているのは、いくつかの関係に基づいてレコードをフェッチする仮想テーブルを作成することです。

ここに3つのテーブルを作成しました

  • 製品
  • ユーザー
  • コメント

との間に関係セットがあります

  1. productとcommentsテーブル-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 に答える