對不起,對於這個問題,我找不到解決這個簡單問題的方法。SQL查詢加入多個條件
我有2個表:
TABLE A
R_ID integer
CID1 integer
CID2 integer
CID3 integer
CID4 integer
TABLE C
CID integer
NAME varchar(50)
我想要做的是,將輸出,對於每一個表中的一行,的CID1
,CID2
名稱等,考慮到CID1
有一個查詢總是一個值,CID2
,CID3
和CID4
可能是NULL
,我不能使用UNION
,在我的小號
這是我的出發點:
SELECT a.R_ID, c.NAME
FROM A a, C c
WHERE (a.CID1 = c.CID or a.CID2 = c.CID or a.CID3 = c.CID or a.CID4 = c.CID)
但是,正如你所看到的,它只適用於所有CID
被賦值,否則某些結果會有一個空白的NAME
字段。
任何提示如何刪除不需要的行將非常感激。
編輯: 我要打印列表:房間# - 在那個房間裏學生的名字,所以輸出的表必須是形式:R_ID
,NAME
假設:
TABLE A
1,1,2,NULL,NULL
2,3,NULL,NULL,NULL
3,4,NULL,NULL,NULL
TABLE B
1, Mark
2, John
3, Steve
4, Nick
我的目標是獲得一個表是這樣的:
R_ID - NAME
1 - Mark
1 - John
2 - Steve
3 - Nick
我得到的是:
1 - Mark
1 - John
1 -
1 -
2 - Steve
2 -
2 -
2 -
3 - Nick
3 -
3 -
3 -
4個LEFT JOIN的解決方案不適用,因爲我不能使用NAME1,NAME2等,但只能使用1個字段名稱。
喜歡的查詢:
SELECT r.R_ID, c.NAME
FROM A a LEFT JOIN C c on a.CID1 = c.CID
LEFT JOIN C as c1 on a.CID2 = c1.CID
LEFT JOIN C as c2 on a.CID3 = c2.CID
LEFT JOIN C as c3 on a.CID4 = c3.CID
將輸出:
1 - Mark
2 - Steve
3 - Nick
NAME is not NULL
上SQLFiddle完美地工作,但仍存在排沒有名字上的解決方案我mysql 5.5.15
(也試過在火鳥2.5,我的電腦上唯一的其他數據庫服務器,但結果相同)
實際問題是什麼? – Strawberry