SQL - заказ по нарушает мой запрос, когда нет отзывов

0

У меня довольно длинный SQL-запрос, который я привел ниже. Как вы можете видеть, он заказывает AvgRating и NumReviews, оба из которых зависят от данных из таблицы отзывов. К сожалению, мне нужно видеть строки в моих результатах, даже если нет отзывов, в настоящее время, если к заказу нет отзывов, то эта строка просто не отображается в результатах. Вся помощь очень ценится.

SELECT travisor_tradesperson.name, travisor_tradesperson.id, travisor_catagory.catname, 
                    travisor_company.cname, travisor_company.description, travisor_company.city, travisor_company.address, travisor_company.postcode, travisor_company.phone, 
                    ROUND(AVG(travisor_review.rating)) as RoundAvgRating, AVG(travisor_review.rating) as AvgRating, COUNT(travisor_review.rating) as NumReviews
            FROM 'travisor_tradesperson'
            INNER JOIN travisor_company 
            ON travisor_tradesperson.company = travisor_company.id
            INNER JOIN travisor_catagory 
            ON travisor_tradesperson.catagory = travisor_catagory.id        
            INNER JOIN travisor_review 
            ON travisor_review.tradesperson = travisor_tradesperson.id 
            WHERE travisor_catagory.catname = '$catagory'
            AND travisor_company.city = '$city'
            GROUP BY travisor_tradesperson.name, travisor_catagory.catname, travisor_company.cname, 
                travisor_company.description
            ORDER BY AvgRating DESC, NumReviews DESC
Теги:

1 ответ

3
Лучший ответ

Слева присоединитесь к travisor_review вместо Inner Join. Внутреннее соединение будет находить только записи, которые присутствуют в обеих таблицах. Если у вас нет отзывов для этой записи tradesperson, она упадет из набора результатов.

Левое соединение возвращает NULL, если оно не может совпадать с предикатом соединения. В этом случае трейдер возвращается, но с NULL. Преобразуйте NULL в 0, если это необходимо, и это должно исправить ваш AVG.

  • 0
    Вы можете использовать coalesce для преобразования нуля в ноль.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню