0

私はこれがこの質問に似ていることを知っています:MySQLクエリ-1つの関連テーブルを合計します-別の関連テーブルを数えますが、私はそれを機能させることができません。

私は3つのテーブルを持っています:

  • Event
  • Attendee
  • Gifts

それぞれについて、の数との合計量Eventを要約する必要があります。贈り物を受け取る場合と受け取らない場合があります。AttendeesGiftsAttendee

ギフトの合計を無視すると、次のクエリで正しい答えが得られるように機能させることができます。

SELECT event.name AS name, count( * ) AS num_attendee
FROM attendee
RIGHT JOIN event on event.id = attendee.event_id 
WHERE event.company_id =6
GROUP BY event.id

しかし、私は各イベントのすべてに与えられた贈り物(つまりGift.Amount価値)をどのように合計するのか分かりません。すべての数字に基づいてAttendees単純にテーブルに参加しようとすると、風変わりになります。Giftevent_id

4

2 に答える 2

0

これは、MS-SQL 2000 では問題ありません。

SELECT event.name AS name, count( * ) num_attendee ,amount
FROM attendee
RIGHT JOIN event on event.id = attendee.event_id 
LEFT OUTER JOIN(
    SELECT event_id,amount=SUM(Amount)
    FROM Gifts
    GROUP BY event_id
) Gifts ON Gifts.event_id=event.id
WHERE event.company_id =6
GROUP BY event.name,amount
于 2013-02-22T00:40:15.003 に答える
0

結合は正しく行っていますか?ギフト テーブルにイベントと出席者の両方が含まれている必要があります。

from attendee right join
     event
     on event.id = attendee.event_id right join
     gifts
     on event.id = gifts.event_id and attendee.id = gifts.attendee_id
于 2013-02-22T00:19:44.577 に答える