0

これら 2 つの SQL ステートメントを組み合わせることができますか? 現在、2 つのクエリを実行しています。少し引き締めてみる。

最初の1つ:

SELECT * FROM (`cars`) 
JOIN `brands` ON `brands`.`br_id` = `cars`.`brand_id`
WHERE `cars`.`id` = '185707'

二つ目:

SELECT ROUND(AVG(rating)) as avg_rating
FROM car_ratings WHERE car_id = 185707 
4

2 に答える 2

3

次を使用してこれを行うことができますgroup by

select cars.*,
       brands.*, 
       round(avg(car_ratings.rating)) as avg_rating
from   (cars
    inner join brands on brands.br_id = cars.brand_id)
    left join car_ratings on car_ratings.car_id = cars.id
where  cars.id = 185707
group by cars.id

これは、標準 SQL に対する MySQL 拡張であることに注意してください。group by標準 SQL では、句で選択したすべてのフィールドをリストする必要があります。

于 2009-10-26T22:17:14.127 に答える
1
select *

, (select round(avg(rating)) from car_ratings 
where car_id = cars.id) as avg_rating

from cars join brands on brands.br_id = cars.brand_id
where cars.id = 185707

しかし、それが改善を表しているかどうかは別の問題であり、どのクエリ プランが使用されているかを確認することで最もよく答えられます。

于 2009-10-26T22:04:17.603 に答える