2012-05-06 17 views
-1

私は2つのテーブル - 1つは "友達"と他の "イベント"と呼ばれる。私の第二、2:複数のクエリmysqlの問題

テーブルfriendsは、私が "イベント" に登録された6つのイベントを持つ列iduser_idあり、かつfriend_id

eventsが列iduser_idを持つテーブル、およびtitle_event

2別の友人の友人。

"友人"のテーブル、私のイベント、友達のイベントで、どのようなクエリが返されますか?

私は以下のクエリを使用しています。これは、私の友人のイベントだけを返します。私のイベントや友達を返すにはどうすればいいですか?

問合せ:

SELECT * 
FROM (
     SELECT a.user_id, a.friend_id 
     FROM tb_friend a 
     WHERE a.user_id = 1 
     ) friends, 
tb_events e 
WHERE e.user_id = friends.friend_id; 
+0

テーブルの両方にサンプルレコード(3-5)を渡して、クエリが返すものを教えてください。 – beck03076

答えて

0

元の "User_ID = 1"のエントリはありません。友人のみ... Daanが提供しているサンプルはWHERE句を使用していますが、明らかにまだ動作していません。あなたの内側のクエリは、あなたとあなたの友人の両方を単一の結果として含めるためのUNIONです。この方法では、修飾リストが1つあります。これがまだ動作しない場合は、実際の名前を持たないサンプルデータを表示します(すべてのサンプルは基本的にはIDですが、隠されることは特別なものではありません)、ソリューションをより良く提供するために他の人を助けることができます。あなたは、このようなサンプルデータを提供するために柔軟でない場合は、これと未来から取得応答が非常に限られたかもしれない...

SELECT * 
    FROM 
     (select 1 as User_ID 
     UNION 
     SELECT a.friend_id AS User_ID 
      FROM tb_friend a 
      WHERE a.user_id = 1 
     ) QualifiedPeople 
     join tb_events e 
     on QualifiedPeople.User_ID = e.User_ID 

、あなただけの明確なイベントをしたい場合は、野生をしません同じイベントに出る複数の人物がすべての人物を表示しているので、実際に各人物のイベントが表示され、8対6のレコードが表示されます。サンプルデータを見ることなく、誰も正直に答えられません。

SELECT distinct e.id, e.title_event 
    FROM ... same rest of query from above 
0

は、これはあなたが探しているものですか?

SELECT * 
FROM (
    SELECT a.user_id, a.friend_id 
    FROM tb_friend a 
    WHERE a.user_id = 1 
    ) friends, 
tb_events e 
WHERE e.user_id = friends.friend_id OR e.user_id = 1; 

私はここで作られた唯一の変更は、MySQLが結果セットで独自のイベントを含めるために取得する必要OR e.user_id = 1を追加しています。

+0

私はすでにそれを試みましたが、ORを追加すると、彼は8つの結果を返しますが、そうではありません。 –

+0

その場合、いくつかのサンプルデータで質問を更新できますか? – Daan

+0

例?何のために? –