2015-06-26 3 views
0

Я не удивительно с mysql любыми способами. До вчерашнего дня я не занимался каким-либо объединением, и теперь у меня проблемы с ним.MYSQL присоединяется к возврату тройных результатов

SQL, заявление я выполнение, как показано ниже:

SELECT `services`.`name`, `services`.`type`, 
`services`.`review_count_approved`, `reviews`.`escalate`, 
`services`.`average_rating` 
FROM `services` 
INNER JOIN `reviews` on `services`.`serviceID` = `reviews`.`serviceID`  
WHERE `services`.`serviceID` IN (50707, 50709); 

делать этот запрос он должен только вернуть 2 результаты, однако на самом деле приведения 2 результатов обратно три раза.

Хорошо, так двух таблиц я получаю информацию от являются

-services

-reviews

Теперь, если я просто сделать следующее заявление SQL

SELECT * FROM `services` WHERE `serviceID` IN (50707,50709); 

Ее навевает эти записи

enter image description here

Но когда я делаю верхний запрос на этом посту, он возвращает эти 2 результата 3 раза.

Что я делаю неправильно?

+0

опубликуйте структуру вашего стола –

+0

Почему вы должны получать только 2 результата? Вы должны получить результат для каждого обзора двух служб. – Barmar

+0

@barmar очень верно, я не думал об этом, и это объясняет, почему ничего не возвращается, когда нет обзора рядом с ним. Как я могу изменить это, так что он возвращает мне только 1 сервис, независимо от того, имеет ли он обзор или нет? –

ответ

2

Это потому, что у вас есть несколько идентификаторов службы в таблице отзывов. Используйте отчетливые

SELECT DISTINCT `services`.`name`, `services`.`type`, 
`services`.`review_count_approved`, `reviews`.`escalate`, 
`services`.`average_rating` 
FROM `services` 
INNER JOIN `reviews` on `services`.`serviceID` = `reviews`.`serviceID`  
WHERE `services`.`serviceID` IN (50707, 50709); 
+0

Отличный материал! это сработало отлично. –

+0

Теперь, чтобы понять, как я это делаю в laravel :) –

+0

теперь, когда я пытаюсь добавить еще один идентификатор (50707,50709,50713), он просто возвращает первые 2 результата? –