2

良い一日。

構造表はこちら

ここに外部キーを持つ元の構造テーブル(sqlfiddleに追加できません)

コード:

SELECT 
    COUNT(*) as count 
FROM Price p 
    left join Firm f on f.id_service = p.id_service 
              AND f.id_city = p.id_city AND f.id_firm = p.id_firm 
    left join City city on city.id_city = p.id_city 
    left join Producer_country pc on pc.id_producer_country = p.id_producer_country 
    left join Dogovor d on d.id_service=p.id_service 
              AND d.id_city=p.id_city AND d.id_firm=p.id_firm 
WHERE 
    p.id_city='73041' AND p.include='1' 
    AND p.blocked='0' AND f.blocked='0' 
    AND f.dogovor='1' AND d.end_date >= '20131003 17:10:30' 
    AND (p.name LIKE 'test%' COLLATE SQL_Latin1_General_Cp1251_CI_AS) 
GROUP BY 
    p.id_price, 
    p.id_service, 
    p.name, 
    p.name_original, 
    p.id_producer_country, 
    p.id_firm, 
    f.name, 
    f.address, 
    f.phone, 
    city.name, 
    pc.name

カウント行を取得したいのですが、結果として次のようになります:

1

で列名を使用する場合count、例。コード:

SELECT 
    COUNT(p.id_price) as count 

私は同じ結果を得ます...

すべての行をカウントする方法を知っている人はいますか?

PS:結果として、ユニークな行数を取得する必要があります:

p.name, 
p.name_original, 
p.id_producer_country, 
p.id_firm, 
f.name, 
f.address, 
f.phone, 
city.name, 
pc.name
4

2 に答える 2

3

を削除するだけGROUP BYです:

SELECT 
    COUNT(*) as count 
FROM Price p 
left join Firm f on f.id_service = p.id_service 
            AND f.id_city = p.id_city AND f.id_firm = p.id_firm 
left join City city on city.id_city = p.id_city 
left join Producer_country pc on pc.id_producer_country = p.id_producer_country 
left join Dogovor d on d.id_service=p.id_service 
              AND d.id_city=p.id_city AND d.id_firm=p.id_firm 
WHERE 
    p.id_city='73041' AND p.include='1' 
    AND p.blocked='0' AND f.blocked='0' 
    AND f.dogovor='1' AND d.end_date >= '20131003 17:10:30' 
    AND (p.name LIKE 'test%' COLLATE SQL_Latin1_General_Cp1251_CI_AS);

GROUP BY結果セットの各行をグループとして使用し、 で指定した 1 つまたは複数の列に同じ値を持つ 1 つまたは複数の行を表す場合は、 を使用しますGROUP BY。しかし、あなたの場合、すべての行の数が必要なので、その必要はありません。

于 2013-10-03T13:43:20.590 に答える
0

使用する代わりにCOUNT(*)、結合されたテーブルの任意の一意のフィールド名を使用して、特異数を取得します

于 2013-10-03T13:44:38.903 に答える