2011-12-22 12 views
0

私は私の質問に関してできるだけ説明するように努めます。表によるとMYSQL結果を取得するために結合する

 table A 
+---------+------------+ 
| userid | username | 
+---------+------------+ 
| 1 |  john | 
| 2 |  doe | 
| 3 |  lewis | 
+---------+------------+ 

    table B 
+---------+------------+-----------+ 
| id  |from_userid | to_userid | 
+---------+------------+-----------+ 
| 1 |  1  |  3  | 
| 2 |  3  |  2  | 
| 3 |  1  |  2  | 
| 4 |  2  |  1  | 
+---------+------------+-----------+ 

Am trying to achieve the following: 

+---------+------------+----------------------+ 
| id  |sender username| receiver username | 
+---------+------------+----------------------+ 
| 1 | john   |  lewis   | 
| 2 | lewis  |  doe   | 
| 3 | john   |  doe   | 
| 4 | doe   |  john   | 
+---------+------------+----------------------+ 

あなたが見ることができるように、代わりの送信者または受信者のユーザーIDを返す、私は戻っていますユーザー名:私は、次のように見ている構造を持つ2つのテーブルからデータをフェッチするためにMYSQL/PHPを使用していますA.

このシナリオでは、左または右のジョインを使用できますか?インナーは正常に動作します合流

答えて

3

この

SELECT b.id, sender.username AS sender_username, receiver.username AS receiver_username 
FROM tableB AS b 
    JOIN tableA AS sender ON b.from_userid = sender.userid 
    JOIN tableA AS receiver ON b.to_userid = receiver.userid 
+0

私はこれをテストしませんでしたが、うまくいくはずです。 'INNER JOIN'を使用していますが、いつも" from "と" to "があると仮定し、それらのレコードは常に' tableA'に存在します。 – cambraca

+0

"from"と "to"は表Aに存在しません。表Bは、フォ​​ーム送信時に "from_useridとto_userid"の値を取得します。表Aに含まれるフィールドは、厳密にはユーザーIDとユーザー名です。ここで間違ったデータベース設計が考えられますか? – user1112155

+0

あなたが何を求めているのかよく分かりません。このクエリはテーブルAからのユーザ名のみを取得します。 'ON'節を見ると、最初のテーブルはテーブルBからの' from_userid'フィールドが 'sender'テーブル(つまりテーブルA)の' userid'フィールドと一致していると言います。 2つ目は同様です。 DBのデザインは私にはうまく見える – cambraca

0

を試してみてください、あなたはちょうどそれらのうちの2つを行う必要がありますが、1からすべてのレコードを取得したいとき... 左と右の加入だけ事前に感謝を必要としていますテーブルと別のテーブルからのものです。この場合、2つの明確な関係があり、2つの結合が必要です。私のMySQLのスキルは少し錆びているので、 'または' [スペースで区切ってテーブル/フィールド名に使用するかどうかわかりません。

Select t1.ID, T1.userName as 'Sender userName', T2.username as 'Receiver username' 
FROM [Table A] A 
INNER JOIN [Table B] T1 
    on T1.from_userid = A.userID 
INNER JOIN [Table B] T2 
    on T2.to_userid = A.userID 
関連する問題