2012-12-01 29 views
2

我有一個表members和一個表venues。 我現在有這個select語句:在MySQL中使用IF/ELSE SELECT

SELECT VenueName, VenueID 
FROM Venue 
WHERE active='Y' 
ORDER BY VenueName 

這句話的結果是用來填充下拉與場館名稱,其作品名單。我會稱它爲「ORIGINAL SELECT」。

我想改變這種做法的下拉列表中只顯示鏈接到成員會場名稱:

SELECT Venue.VenueName, Venue.VenueID, members.id, members.venueid 
FROM Venue, members 
WHERE Venue.VenueID = members.venueid 
AND members.id='$userid' 

這也適用。我會稱它爲「新選擇」。

我有兩個superadmins其members.venueidall,而不是場地的ID號,所以我想創建一個運行新的SELECT否則,如果然後運行ORIGINAL SELECT聲明。

任何人都可以指向正確的方向嗎?我嘗試了各種各樣的東西。

回答

1

你可以嘗試類似如下的內容:

SELECT Venue.VenueName, Venue.VenueID 
FROM Venue, members 
WHERE 
(
    Venue.VenueID = members.venueid 
    AND $userid <> 'all' 
    AND members.id = 'all' 
) 
OR 
(
    Venue.VenueID = members.id 
    AND $userid = 'all' 
    AND members.id = 'all' 
) 
+0

感謝幫助克里斯,但不幸的是我無法得到這個工作。我正在嘗試對它進行一些修改,以查看是否可以在正確的一個上面發現! –

+0

到目前爲止,我有這樣的: '選擇Venue.VenueName,Venue.VenueID 從場館,成員 WHERE( '$用戶ID'= '全部' 和積極= 'Y' ) OR( Venue.VenueID = members.venueid AND members.id ='$ userid' ) ORDER BY VenueName' 這似乎工作,如果$ userid在NOT'all'中,如果它是'all'它列出正確的VenueName,但出於某種原因,它列出每一個12次而不是一次! –

+0

DISTINCT解決了問題:) –

1

感謝@克里斯你指出正確的方向我,下面是最後的版本,我得到了工作:

SELECT DISTINCT Venue.VenueName, Venue.VenueID 
FROM Venue, members 
WHERE (
'$userid' = 'all' 
AND active = 'Y' 
) 
OR (
Venue.VenueID = members.venueid 
AND members.id = '$userid' 
) 
ORDER BY VenueName