Игнорировать нулевые результаты в MySQL JOIN-запросах

У меня есть запрос на соединение MySQL, который хорошо работает (отказ от ответственности: взято из учебника) :

<?php $connection = mysql_connect("localhost", "root", "test") or die("Error connecting to database"); mysql_select_db("products90", $connection); $result = mysql_query("SELECT * FROM buyers LEFT JOIN products USING (id);", $connection) or die("error querying database"); $i = 0; while($result_ar = mysql_fetch_assoc($result)){ ?> <table> <tr <?php if($i%2 == 1){ echo "class='body2'"; }else{echo "class='body1'";}?>> <td> <?php echo $result_ar['buyer_name']; ?></td> <td> <?php echo $result_ar['manufacturer']; ?> </td> <td> <?php echo $result_ar['product_name']; ?> </td> </tr> </table> <?php $i+=1; } ?> 

Однако, если бы я хотел, чтобы он проигнорировал результаты NULL, что мне нужно сделать с JOIN, какой тип подходит?

Я посмотрел на Google, но не знаю, с чего начать.

Solutions Collecting From Web of "Игнорировать нулевые результаты в MySQL JOIN-запросах"

Когда вы говорите, что у вас есть нулевые результаты, вы имеете в виду, где нет продуктов?

В любом случае, если у вас есть идентификаторы нулей, следовательно, никакого результата в продуктах, вы можете просто добавить

 where products.id is not null 

или, вы можете изменить соединение с левого соединения, чтобы просто присоединиться, сделав его внутренним соединением

Говоря, что вы хотите игнорировать результаты NULL, что именно вы имеете в виду? Вы говорите, что когда ваше левое соединение выполняется, вы получаете некоторых покупателей, которые NULL рядом с ними, где будут продукты (покупали они их)?

В этом случае то, что вы ищете, это INNER JOIN, который будет показывать только значения, если он имеет совпадение в другом .

Вы бы использовали INNER JOIN для этого (если бы я правильно понял ваш вопрос).

Обзор типов JOIN в MySQL см. На странице http://dev.mysql.com/doc/refman/5.1/en/join.html.

 SELECT * FROM buyers LEFT JOIN products USING (id) WHERE products.id IS NOT NULL 

ИЛИ

 SELECT * FROM buyers JOIN products USING (id) 

Использование JOIN приводит только к сопоставленным строкам, где LEFT JOIN предоставляет всех покупателей независимо от любых совпадений, найденных в продуктах, и затем фильтрует записи. Я не совсем уверен в вашем сценарии, но мне кажется проще просто использовать JOIN вместо LEFT JOIN

Если вы хотите проигнорировать нулевые результаты, просто используйте INNER JOIN , вам не нужен LEFT JOIN .
Измените свой запрос на:

 SELECT * FROM buyers JOIN products USING (id)