2011-07-05 129 views
0

我有兩個疑問。我不知道如何只有一個效果。我沒有好的操作系統和SQL ...有沒有辦法將這些查詢合併爲一個?

這裏是僞代碼:

friends = query(" 
    SELECT `bio_contacts`.`contact_id` 
    FROM `bio_contacts` 
    WHERE `bio_contacts`.`user_id` = '33' 
") 

query(" 
    SELECT `bio_community_events`.`id`, `bio_community_events`.`begin_on`, `bio_community_events`.`name` 
    FROM `bio_community_events` 
    WHERE `bio_community_events`.`user_id` IN friends 
") 

有沒有辦法將它們組合成一個查詢?我猜,它應該會提高性能。加入,也許?

回答

1

您的查詢甚至不需要連接。 你可以說:

選擇bio_community_eventsid, bio_community_eventsbegin_on, bio_community_eventsname FROM bio_community_events WHERE bio_community_eventsuser_id = 33;

或者 - 您的字段名稱有點偏離,我們應該加入以下字段:bio_contacts.contact_id = bio_community_events.user_id?在這種情況下,你可以做 以下連接:

SELECT `bio_community_events`.`id`, `bio_community_events`.`begin_on`, `bio_community_events`.`name` 
    FROM `bio_community_events` INNER JOIN `bio_contacts` on `bio_community_events`.user_id=bio_contacts.contact_id 
WHERE bio_contacts.user_id=33; 
+0

賓果!第二個查詢是我需要的。 – daGrevis

2
SELECT `bio_community_events`.`id`, `bio_community_events`.`begin_on`, `bio_community_events`.`name` 
FROM `bio_contacts` 
LEFT JOIN `bio_community_events` 
ON `bio_contacts`.`contact_id`= `bio_community_events`.`user_id` 
WHERE `bio_contacts`.`user_id` = '33' 
+0

咋,這個工作。但是這也返回3個空行。有什麼辦法解決這個問題? – daGrevis

+0

Nevermind,@Eljakim給寫查詢! ;) – daGrevis

+0

這是提供空行的LEFT連接。您可能希望將其更改爲內部聯接。 – Eljakim

相關問題