3

2つのテーブルをクエリに結合し、各結合から一致する行の数をカウントしようとしています。しかし、間違った結果で戻ってきたようです。結果は2倍になっているようです。これがクエリです

SELECT *, COUNT(car_id) AS numCars, COUNT(van_id) AS numVans 
            FROM company_branch
            LEFT JOIN car ON car_branchid = company_branch_id
            LEFT JOIN van ON van_branchid = company_branch_id
            WHERE company_branch_userid = 1

            GROUP BY company_branch_id, 
            ORDER BY company_branch_active DESC, company_branch_name ASC
4

1 に答える 1

4

それがテーブルの主キーであり、テーブルcar_idの主キーであると想定しています。その場合は、を使用して各グループのカウントを個別に取得します。これを試して:carvan_idvanDISTINCT

SELECT *, COUNT(DISTINCT car_id) AS numCars, COUNT(DISTINCT van_id) AS numVans 
        FROM company_branch
        LEFT JOIN car ON car_branchid = company_branch_id
        LEFT JOIN van ON van_branchid = company_branch_id
        WHERE company_branch_userid = 1

        GROUP BY company_branch_id, 
        ORDER BY company_branch_active DESC, company_branch_name ASC
于 2012-11-09T00:12:04.610 に答える