2011-07-05 3 views
0

私は2つのクエリを持っています。私は1つだけで同じ効果を出す方法を知らなかった。私はSQLとの良好なOSではないよ...こここれらのクエリを1つに結合する方法はありますか?

は擬似コードです:

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つのクエリにそれらを結合する方法はありますか?パフォーマンスが向上するはずです。結合して、多分?

答えて

1

あなたのお問い合わせにも参加は必要ありません。 あなたはちょうど言うことができる:

SELECT 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

ビンゴ:その場合、あなたは 次の参加を行うことができます! 2番目のクエリは私が必要なものです。 – 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

関連する問題