1

多くの検索の後、次のSQLステートメントにたどり着きました:

SELECT a.*, b.name as producer ,
    (SELECT ROUND(AVG(average)) 
    FROM `abc123_pb_carexperience` d 
    LEFT JOIN `abc123_pb_cars` e on d.car_id=e.id HAVING name LIKE '%a.name%') as avgrating
FROM abc123_pb_brands a
LEFT JOIN abc123_pb_producer as b on a.producer_id = b.id
ORDER BY a.name ASC

注目すべき点は、サブクエリの条件 HAVING name LIKE です。そこに名前を文字列 (HAVING name LIKE '%bmw%') として書き込むと機能しますが、特定のブランドのすべての平均評価を取得するには、テーブル a の名前フィールドを使用する必要があります。それを達成する方法はありますか?ありがとう。

4

2 に答える 2

2

内部サブクエリは次のようになります。

  (SELECT ROUND(AVG(average)) 
    FROM `abc123_pb_carexperience` d 
    LEFT JOIN `abc123_pb_cars` e on d.car_id=e.id 
    WHERE name LIKE CONCAT('%',a.name,'%'))
于 2013-03-18T10:29:28.980 に答える
0

あなたはそのようにあなたのクエリを変更することができます

SELECT
  a.*,
  b.name as producer,
  ROUND(AVG(d.average)) as avgrating
FROM abc123_pb_brands a
  LEFT JOIN abc123_pb_producer as b
    on a.producer_id = b.id
  LEFT JOIN `abc123_pb_carexperience` d
    ON d.name LIKE '%a.name%'
  LEFT JOIN `abc123_pb_cars` e
    on d.car_id = e.id
ORDER BY a.name ASC
于 2013-03-18T10:31:15.417 に答える