2013-10-26 44 views
2

即時通訊工作的選擇。 我有一張名爲vriend的桌子和一張名爲gebruiker的桌子。現在,我得到2選擇給我我想要的結果,但我想將它們合併在一起合併2選入1

SELECT g.naam,g.gebruikerID 
FROM gebruiker g 
INNER JOIN vriend v on g.gebruikerID = v.gebruikerID_Jezelf 
WHERE g.gebruikerID IN(SELECT gebruikerID_Jezelf FROM vriend); 

SELECT g.naam,g.gebruikerID 
FROM gebruiker g 
INNER JOIN vriend v on g.gebruikerID = v.gebruikerID_Persoon 
WHERE g.gebruikerID IN(SELECT gebruikerID_Persoon FROM vriend); 

我想要的是那些2個sleect報表合併到一起不與UNION但是,例如:

選擇1給出:

 
NAAM  |  ID 
----------------- 
Henk  |  1 
Karel |  2 

選擇2給出了:

 
NAAM  |  ID 
----------------- 
Andrew |  4 
Piet  |  5 

合併會比

 
NAAM  |  ID  | NAAM  |  ID 
------------------------------------------ 
Henk  |  1  | Andrew |  4 
Karel |  2  | Piet  |  5 
+0

的WHERE子句是沒有意義的,他們只複製狀態的JOIN ... ON狀態,所以他們總是如此,你可以省略它們。 – wildplasser

+0

好吧,這是真的在哪裏makig沒有任何意義,但我仍然可以如何合併它們,或者你知道一個更好的選擇語句,因爲問題是人的名字是站在gebruiker表中,只有ID朋友桌。 我想要的不僅是顯示ID,還顯示該用戶的名稱。 –

+0

@ user2919513的解決方案看起來正確(但他可以忽略整個where子句) – wildplasser

回答

1
SELECT g.naam,g.gebruikerID ,g2.naam,g2.gebruikerID 
FROM gebruiker g , gebruiker g2, vriend v 
WHERE g.gebruikerID = v.gebruikerID_Jezelf 
OR g2.gebruikerID = v.gebruikerID_Persoon 
AND g.gebruikerID IN(SELECT gebruikerID_Jezelf FROM vriend) 
OR g2.gebruikerID IN(SELECT gebruikerID_Persoon FROM vriend); 
+0

錯誤報告 - SQL錯誤:ORA-00904:「G」。「GEBRUIKERID」:無效標識符 00904. 00000 - 「% s:無效標識符「這個錯誤是在第一個內部連接 –

+0

我編輯內部連接子句到現在嘗試 –

+0

它幾乎工作,但我會得到雙行像例如piet是與他自己的朋友 –

0

試試這個

SELECT g.naam,g.gebruikerID 
    FROM gebruiker g 
    INNER JOIN vriend v on g.gebruikerID = v.gebruikerID_Jezelf 
    WHERE g.gebruikerID IN(SELECT gebruikerID_Jezelf FROM vriend) OR g.gebruikerID IN(SELECT gebruikerID_Persoon FROM vriend); 
1
SELECT g.naam, g.gebruikerID 
    , g2.naam, g2.gebruikerID 
FROM vriend v 
JOIN gebruiker g1 on g1.gebruikerID = v.gebruikerID_Jezelf 
JOIN gebruiker g2 ON g2.gebruikerID = v.gebruikerID_Persoon 
    ;