Как я могу не отображать нулевые значения в результатах левого соединения? - PullRequest
3 голосов
/ 14 октября 2010

У меня есть запрос, который работает хорошо, но я пытаюсь выяснить, могу ли я немного почистить результаты.

Запрос извлекает из таблицы поля State и Fiber IDназывается fiber_intake.Затем он извлекает все поля из моей таблицы hvi, где Fiber ID = GA в таблице fiber_intake.

Код:

SELECT `fiber_intake`.`State`, `fiber_intake`.`Fiber ID`, `hvi`.*
FROM `fiber_intake`
 LEFT JOIN `hvi` ON `fiber_intake`.`Fiber ID` = `hvi`.`Fiber ID` 
WHERE (`fiber_intake`.`State` = 'GA')

Работает отлично, за исключением того, что вытягивает все волокна GAИдентификаторы, даже те, у которых нет данных hvi в другой таблице.Таким образом, я получаю некоторые результаты с кучей нулей для данных hvi.

Есть ли способ исключить идентификаторы Fiber ID, с которыми не связаны данные таблицы hvi?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 14 октября 2010

Используйте INNER JOIN вместо LEFT [OUTER] JOIN.

Это добавление обратной строки является целой целью OUTER JOIN.

SELECT `fiber_intake`.`State`, `fiber_intake`.`Fiber ID`, `hvi`.*
FROM `fiber_intake`
 INNER JOIN `hvi` ON `fiber_intake`.`Fiber ID` = `hvi`.`Fiber ID` 
WHERE (`fiber_intake`.`State` = 'GA')
3 голосов
/ 14 октября 2010

Используйте ВНУТРЕННЕЕ СОЕДИНЕНИЕ.

...