3

招待状とイベントの 2 つのテーブルがあります。

イベントの名前、イベントごとのゲストの合計、および同じクエリでイベントごとに true の場合のプレゼントの合計を取得する必要があります。

events.name、count(invitations.guest)、count(invitations.presents when = true) を選択して両方のテーブルを結合 (左結合) し、イベントごとにグループ化するようなもの...

テーブルのデータを調べています...

https://dl.dropbox.com/u/360112/Duda/invitaciones.jpg https://dl.dropbox.com/u/360112/Duda/eventos.jpg

うまくいくと思いますが、欲しいものが手に入りません...

SELECT e.name, count(in.guest) as Guests, (SELECT count(presents) 
FROM watermelon.invitations WHERE presents = true) as Presents 
FROM watermelon.events e LEFT JOIN watermelon.invitations in ON e.id = in.event 
GROUP BY in.event;

それから私は得る:

http://dl.dropbox.com/u/360112/Duda/resultado.jpg

いくつかの提案?私はそれが必要です、そして私は試みて間違った結果を得ることにうんざりしています...前もって感謝します!

4

2 に答える 2

2

COUNTGROUP BYおよびを使用して、このようなものが必要なように聞こえますCASE

SELECT E.Id, 
    E.Name, 
    COUNT(I.Id) TotalGuests,
    COUNT(CASE WHEN I.Presents = 'TRUE' THEN 1 END) TotalPresents
FROM Events E
    LEFT JOIN Invitations I ON E.Id = I.Event
GROUP BY E.Id, E.Name

プレゼントのデータ型については肯定的ではありませんが、これは近いはずです。また、 a を使用しLEFT JOINてすべてのイベントを返します。

于 2013-04-05T03:28:37.810 に答える