クエリがありますが、テーブル内の会社ごとに1つの結果のみを取得するには、クエリをデータベースに変更する必要がありますPrice
。
このために行を追加GROUP by p.id_firm
し、次のクエリを取得します。
SELECT TOP 20
p.id_price as p_id_price,
p.id_service as p_id_service,
p.name as p_name,
p.name_original as p_name_original,
p.id_producer_country as p_id_producer_country,
p.id_firm as p_id_firm,
f.name as f_name,
f.address as f_address,
f.phone as f_phone,
city.name as city_name,
pc.name as pc_name
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
WHERE p.id_city='73041'
AND p.include='1'
AND p.blocked='0'
AND f.blocked='0'
AND ( f.name LIKE 'Окно%' COLLATE SQL_Latin1_General_Cp1251_CI_AS OR p.name LIKE 'Окно%' COLLATE SQL_Latin1_General_Cp1251_CI_AS )
GROUP by p.id_firm ORDER BY p.name ASC
しかし、それを使用すると、エラーが発生します。
メッセージ8120、レベル16、状態1、行2の列'Price.id_price'は、集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストでは無効です。
このクエリを変更する正しい方法を教えてください。
ここに表示されるすべてのテーブルを構成します
PS:不正確でごめんなさい。会社名と名前の製品で検索します。検索語が製品名または会社名に含まれていて、同じid_firmの結果がいくつかある場合は、最も適切な値を1つ選択する必要があります。つまり、結果検索のid_firmは一意である必要があります。