2012-05-02 21 views
1

私は2つのテーブルを持っています.1つのテーブルはユーザ用で、もう1つのテーブルはuser_interested_in_whoテーブルです。ユーザーが別のユーザーに関心がある場合条件付きのMySQL結合?

アイデアがある、私はuser_interested_in_whoテーブルにそれらの二人のユーザーのIDを挿入します

私のテーブルのスキーマです:

Users    user_interested_in_who 
    id    id 
    name    this_user (id from the users table) 
        interested_in_this_user (id from the users table) 
        interested_or_not (1 = yes, 0 = no) 

だから私はしたいです一緒に参加することによって、私のテーブルを照会するために、私のクエリは、このようなものです:

SELECT users.id, users.name, user_interested_in_who.interested_or_not 
FROM users 
LEFT JOIN user_interested_in_who 
ON user_interested_in_who.this_user = 1 *//1 is the id of the current log in user* 
GROUP BY users.id 

このクエリの問題はinterested_or_not列すべてが持っているということです。1.場合でも、 interested_or_not列には、レコードに0を持っている

私の質問にはレコードがuser_interested_in_whoテーブルに見つからない場合、私はそれがNULLを返すために照会することができると私はレコードが0であればuser_interested_or_not欄に0を返すように、それをどのように照会することができる方法です


編集:

どのように私はそれがテーブルのこの種を返すことができます:

table: 
id | name | interested_or_not 
1 jess NULL 
2 erika 1 
3 jil 0 
4 adrian NULL 
.... 
1050 mich 1 
+0

@Alanからの回答はあなたの望むものに近いと思います。しかし、誰に興味があるのか​​、誰がPeron1とPerson2に簡素化すべきかの構造。なぜ人のペアのレコードを1:2,1:3,1:4にして、2:1,3:1,4:1の逆のレコードを作成するのですか?両方のデータの組み合わせを可能にする膨大なデータが得られます。 – DRapp

答えて

2

あなたが登録しようが、あなたのON句の無いリテラル値でLEFT OUTERを使用する必要があります。

これは、最初のテーブル内のすべてのエントリと、2番目のテーブル内の一致するもの、またはNULLを返します。

SELECT users.id, users.name, user_interested_in_who.interested_or_not 
FROM users 
LEFT OUTER JOIN user_interested_in_who 
    ON user_interested_in_who.this_user = users.id 

GROUPする必要はありません。すべての値を表示している場合、WHEREは必要ありません。ユーザーIDに制限する場合は、次のように変更してください。

SELECT users.id, users.name, user_interested_in_who.interested_or_not 
FROM users 
LEFT OUTER JOIN user_interested_in_who 
    ON user_interested_in_who.this_user = users.id 
WHERE users.id = 1 
+0

いいね。できます。どうもありがとうございました :) –

1

あなたはに必要はLEFT JOINではありません。 JOINは、両方のテーブルのレコードだけを返します。ユーザーのログインIDを使用して結合を作成する代わりに、where句も必要です。

あなたはいつもこれは、あなたが欲しいものを行う必要があります。1.

取得している理由です、グループの何もする必要がありいけません。

SELECT users.id, users.name, user_interested_in_who.interested_or_not 
FROM users 
JOIN user_interested_in_who 
ON user_interested_in_who.this_user = users.id 
WHERE users.id=1; 
+0

こんにちは、私を助けてくれてありがとう。しかし、私はユーザテーブルのすべてのユーザに問い合わせているので、このクエリに問題があります。このクエリを使用すると、単一行が返されます。 –

+0

@KevinLee:だから 'WHERE'節を削除してください。 – eggyal

+0

本当に参加しますか?私は左に参加すると思った – nawfal