2010-04-27 86 views
0
select social_members.* 
    , social_mcouple.* 
WHERE m_id = '".$_SESSION['userid'] . "' 
    AND c_id = '".$_SESSION['userid'] . "' 

從social_members。*中選擇所有字段,如果social_mcouple.c_id = $ _SESSION ['userid'],則選擇所有來自social_mcouple。*的字段。這可以通過IF EXIST來完成,如果可以的話如何。謝謝是否是Mysql IF EXIST該查詢應該使用什麼?

+1

如果您想要social_members和social_mcouple的所有列,爲什麼要使用Exists函數? – Thomas 2010-04-27 01:59:28

回答

2

如果我正確地做了,外連接會更好。

SELECT social_members.* 
    , social_mcouple.* 
    FROM social_members 
    LEFT OUTER JOIN social_mcouple 
    ON social_members.m_id=social_mcouple.c_id 
WHERE m_id='".$_SESSION['userid']."' 

這將檢索對每個構件的行,和任何相應的行從social_mcouple。如果social_mcouple表中沒有相應的行,則結果中的所有social_mcouple。*行都將爲NULL。

根據您的確切需求以及這兩個表之間的關係,您最好將其作爲兩個查詢運行,一個用於從social_members中檢索匹配的行,另一個用於從social_mcouple中檢索行。無論是採用外連接還是兩個單獨的查詢都將取決於您想返回的數據的「形狀」。

爲了以防萬一,您認爲根據數據不可能返回不同數量的列。 (例如,如果沒有適用的social_mcouple行,只有social_members列。)