0

このサイトでの最初の質問は簡単です。

GROUP BY2 つのテーブルからの 2 つのパラメーターでSQL を使用することは可能ですか?

SELECT 
  DISTINCT COUNT(a.id), 
  b.id 
FROM 
  table a 
  LEFT JOIN table b 
GROUP BY a.id, b.id

完全なリクエストを追加します

SELECT DISTINCT e.PkID, e.LocID, e.LocationName, l.Name, e.LocationCity, l.City, e.Title, l.Descript, e.Description, e.LocID, e.LocationName, e.StartDate, e.StartTime, e.EndTime, e.TBD, c.CategoryName, Count(e.PkID), ec.CategoryID, l.PkID
                FROM events e
                        LEFT JOIN eventcategories ec ON (ec.EventID = e.PkID)
                        LEFT JOIN categories c ON (ec.CategoryID = c.PkID)
                        LEFT JOIN locations l ON (e.LocID = l.PkID)
                    WHERE DATE(StartDate) >= DATE(CURDATE()) AND l.IsActive = 1
                    GROUP BY " . $Group . "
                    ORDER BY " . $Order . "
                    ;

$Group = $Order = 'l.Name';

複数の l.Name を表示し、それぞれについて、開催されたイベントの数をカウントします (e.PKiD)

各イベントには 1 つ以上のカテゴリがあります。カテゴリが 1 つしかない場合は正しいカウントですが、たとえば、1 つの場所に 3 つのカテゴリを持つ 1 つのイベントがある場合、1 (イベント) ではなく 3 とカウントされます。

4

2 に答える 2

0

a.idごとにカウントするにはb.id、次のようなものを使用できます。

SELECT  b.id
,       count(a.id)
from    TableB b
left join
        TableA a
on      a.bid = b.id

TableA.bidを参照する外部キーはどこにありますかTableB(id)

于 2013-04-29T10:36:32.577 に答える