2011-08-07 8 views
2

私はデータベースに2つのテーブルがあります:イベントとセッション(1つのイベントには複数のセッションがあります)。MySQLのselect with left join tableは、不完全な結果セットを返します

イベント名とそれに対応する最初のセッションの日付と最後のセッションの日付を一覧表示して、ユーザーが範囲を参照できるようにするクエリを作成しています。

セッションテーブルにイベントのレコードが含まれていない場合は、イベントが結果セットに含まれていません(range_startとrange_finishはNULLにする必要があります)。

セッションがない場合でも、イベントテーブルのすべてのレコードを含めるようにクエリを修正するにはどうすればよいですか?

SELECT e.id, e.name, MIN(s.date_start) AS range_start, MAX(s.date_finish) AS range_finish 
FROM `event` AS e 
LEFT JOIN `session` AS s 
ON e.id = s.event_id 
WHERE s.hidden != 1 

答えて

2
SELECT e.id, e.name, MIN(s.date_start) AS range_start, MAX(s.date_finish) AS range_finish 
FROM `event` AS e 
LEFT JOIN `session` AS s 
ON e.id = s.event_id 
WHERE (s.hidden != 1) 
OR s.hidden IS NULL 

s.hiddenと仮定すると、自然にnullにすることはできません。

+0

最後にGROUP BY e.idを追加するだけでした。ありがとう –

関連する問題