SQL select внутри select - PullRequest
       19

SQL select внутри select

0 голосов
/ 10 марта 2019

У меня 3 таблицы.

person{personid,name, etc}
bid{bidid,personid,etc}
rating{ratingid,bidid,rating}

Человек получает оценку после того, как предложение принято покупателями. Так что 1 bid = 1 rating. И тогда человек делает еще один заказ, но рейтинг не отображается.

Я уже пробовал:

SELECT a.namausaha,ROUND(AVG(c.rating)) AS rating,a.kota,a.kontak,b.bidprice,a.mitraid
FROM tb_mitra a
JOIN tb_bid b ON b.mitraid=a.mitraid
LEFT JOIN tb_rating c ON c.bidid=b.bidid
WHERE b.orderid='OD004' AND b.statusbidid='1'
GROUP BY a.mitraid  

но это не работает.

Как это сделать? Я хочу показать рейтинг для каждого человека.

enter image description here

1 Ответ

0 голосов
/ 10 марта 2019

Некоторые rating возврат null из-за left join

Попробуйте это

SELECT a.name,
  ROUND(AVG(CASE WHEN c.rating IS NULL THEN 1 ELSE c.rating END )) AS rating,
  a.etc,b.etc,a.personid
FROM person a
JOIN bid b ON b.personid=a.personid
LEFT JOIN rating c ON c.bidid=b.bidid
GROUP BY a.personid 

SQL Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...