2012-05-06 38 views
-1

我有兩個表 - 一個叫「朋友」和其他「事件」。多個查詢的問題mysql

friends有列iduser_id,並friend_id

eventsuser_idid,和title_event

我在 「事件」 註冊六個事件:我的第二個,2個和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」的條目,只有朋友...大安提供的示例使用的WHERE子句顯然仍然不適用於您。我建議你的內部查詢是一個UNION,包括你和你的朋友作爲一個單一的結果......這樣,你有一個合格的列表......如果這仍然不起作用,通過顯示一些沒有實際名稱的示例數據(自無論如何,你的所有樣本基本都是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; 

我在這裏所做的唯一變化是增加OR e.user_id = 1應該讓MySQL包括在結果集中自己的事件。

+0

我已經嘗試過,但如果我添加OR,他會返回8個結果,而不是6. –

+0

在這種情況下,您是否可以使用一些示例數據更新您的問題? – Daan

+0

例子?爲了什麼? –