私はこのクエリを持っています:
SELECT
e.*, u.name AS event_creator_name
FROM `edu_events` e
LEFT JOIN `edu_users` u
ON u.user_id = e.event_creator
INNER JOIN `edu_event_participants`
ON participant_event = e.event_id && participant_user = 1
WHERE
MONTH(e.event_date_start) = 6
AND YEAR(e.event_date_start) = 2013
それは完全に機能しますが、値が e.event_type が 1 の場合にのみ INNER JOIN を実行したいのです。そうでない場合は、INNER JOIN を無視する必要があります。
私はしばらくの間それを理解しようとしましたが、解決策は私の提案のために実装するのが難しいようです(それは選択/特定の値のためだけです)。
私は次のようなことを考えています:
SELECT
e.*, u.name AS event_creator_name
FROM `edu_events` e
LEFT JOIN `edu_users` u ON u.user_id = e.event_creator
if(e.event_type == 1) {
INNER JOIN `edu_event_participants` ON participant_event = e.event_id && participant_user = 1
}
WHERE MONTH(e.event_date_start) = 6
AND YEAR(e.event_date_start) = 2013