2012-03-24 9 views
0

で3回:SQLが表示される一つのテーブルからすべてのレコードを選択し、<私は2つのテーブル持っている別の

Event 
+----------+---------+--------------+ 
| event_id | name | date   | 
+----------+------+-----------------+ 
| 1  | Event 1 | 26/03/2012 | 
+----------+------+-----------------+ 
| 2  | Event 2 | 27/03/2012 | 
+----------+------+-----------------+ 

Reservation 
+----------------+------------+--------------+ 
| reservation_id | date  | themed_id | 
+----------------+------------+--------------+ 
| 1    | 26/03/2012 | 1   | 
+----------------+------------+--------------+ 
| 2    | 26/03/2012 | 1   | 
+----------------+------------+--------------+ 
| 3    | 27/03/2012 | 2   | 
+----------------+------------+--------------+ 
| 4    | 26/03/2012 | 1   | 
+----------------+------------+--------------+ 

にはどうすれば予約テーブルに以下の3回表示されるすべてのイベントが表示されます。

出力は次のようになります。イベント2として

+----------+---------+--------------+ 
| event_id | name | date   | 
+----------+------+-----------------+ 
| 2  | Event 2 | 27/03/2012 | 
+----------+------+-----------------+ 

は予約で一度

おかげで、私はEvent.event_id = Reservation.themed_idを推測している

+1

最初に何か試しましたか?私たちはあなたを支援するためにここにいます。 – Bojangles

答えて

1
SELECT * 
FROM Event 
WHERE event_id IN (
SELECT themed_id 
FROM Reservation 
GROUP BY themed_id 
HAVING COUNT(*) < 3) 

私がテストしていませんが、基本アイデアはこれです。

1

が登場していますか?その場合:

編集: LEFT JOINに変更され、予約が0件のイベントが追加されました。

SELECT 
    Event.event_id, 
    Event.name, 
    Event.date 
FROM 
    Event 
LEFT JOIN Reservation ON Event.event_id = Reservation.themed_id 
GROUP BY 
    Event.event_id 
HAVING 
    COUNT(DISTINCT Reservation.reservation_id) < 3 
関連する問題