2013-10-26 42 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 
    ;