SQL - заказ по нарушает мой запрос, когда нет отзывов - PullRequest
0 голосов
/ 27 июня 2018

У меня довольно длинный 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 Ответ

0 голосов
/ 27 июня 2018

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

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

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