1

SQLに2つのテーブルがあります:

client
id   first
1    david
2    jenna
3    ben

rating
id  clientid userid rating ratetext         date
1   1        3      4      Very good        12/4/2012
2   3        6      3      Simple bla bla   5/3/2013

そして、私はすべての評価を取得したいuserid ので、次のようなことを試します:

SELECT rating,ratetext,date,first FROM rating r 
INNER JOIN client c ON r.userid = 3;

しかし、私は常に取得する必要のない他の行を含む行を取得します。私のコマンドの何が問題なのですか?

4

4 に答える 4

3

おそらく、明示的に指定された ID を持つ評価と、対応するクライアントを選択する必要があると思われます。これは、レコードにclientid保存されているためです。rating

SELECT rating,ratetext,date,first FROM rating r 
INNER JOIN client c ON c.id = r.clientid
WHERE r.userid = 3;
于 2013-04-05T19:24:30.060 に答える
3
SELECT rating, ratetext, date, first 
FROM   rating r INNER JOIN client c 
ON     r.clientid = c.id
WHERE  r.userid = 3;
于 2013-04-05T19:25:06.117 に答える
1

結合は、2 つのテーブルを接続する 2 つの情報を記述する必要があります。次のようなものが必要です。

SELECT * FROM rating r, client c WHERE r.clientid=c.id AND r.userid=3
于 2013-04-05T19:25:09.490 に答える
1

これがあなたが探しているものだと思います:

SELECT r.rating, r.ratetext, r.date, c.first
FROM rating AS r
INNER JOIN client AS c
  ON r.clientid = c.id
WHERE r.userid = 3

2 つのテーブルのクライアント ID 列を結合してから、where 句でユーザー ID を使用してフィルタリングする必要があります。

r.clientid と r.userid にインデックスがあることを確認してください。

于 2013-04-05T19:27:27.450 に答える