2013-09-30 53 views
2

我有下面的mysql查詢。但它不起作用。mysql查詢:如何加入多個表的表格

SELECT CASE 
     WHEN isLevel = '1' THEN 'Mahasiswa' 
     WHEN isLevel = '2' THEN 'Dosen' 
     WHEN isLevel = '3' THEN 'Karyawan' 
     ELSE 'Admin' 
     END as level 
FROM mhs LEFT JOIN if(isLevel=1,'mahasiswa','dosen') ON username=iduser 
WHERE blabala. 

如果「isLevel = 1」我想加入MHS與mahasiswa表中,如果「isLevel = 2」攜手同多申表MHS,......我應如何編寫查詢?

請幫幫我。 謝謝。

+0

我不相信有可能以這種方式進行**條件**連接:爲什麼不簡單地加入到兩者? –

回答

1

您無法有條件加入。但使用2左聯接拿到兩個表

Select CASE 
    WHEN isLevel = '1' THEN 'Mahasiswa' 
    WHEN isLevel = '2' THEN 'Dosen' 
    WHEN isLevel = '3' THEN 'Karyawan' 
ELSE 'Admin' 
END as level 
from mhs 
left join mahasiswa m on m.username=iduser 
left join dosen d on d.username=iduser 
1

你可以在這裏使用一個聯合聲明:

SELECT 'Mahasiswa' AS level 
FROM mhs, mahasiswa 

WHERE isLevel = 1 
AND username = iduser 

UNION ALL 

SELECT CASE WHEN isLevel = 2 THEN 'Dosen' 
      WHEN isLevel = 3 THEN 'Karyawan' ELSE 'Admin' END AS level 
FROM mhs, dosen 

WHERE isLevel != 1 
AND username = iduser; 

雖然這似乎很難辦法做到這一點。長期來看,你可能會把isLevel列的翻譯放到另一個表中,這樣你可以重複使用。除非你真的很喜歡寫CASE陳述。

+0

Ok JamesF。這很好。多謝,夥計。 –