2017-02-03 2 views
3

Предполагая, что у меня есть 2 таблицыMySQL внутреннее соединение с нулевыми столбцами

Table a 
brand Fruit   edible color size 
farmers banana  yes  yellow null 
fresh banana  yes  red  10 
bounty banana  null  green 2 
farmers apple   yes  red  5 
organic grapes  null  violet 5 
love  strawberry yes  null 5 
flow  lavander  no  null null 

Table b 
boxId fruit  edible color size 
10100 banana  yes  yellow 9 
19299 banana  yes  red  10 
10992 apple  yes  red  5 
10299 grapes  yes  red  5 
01929 lavander no  violet 3 

возможно присоединиться Таблица а и б даже с правилом, что: если есть нулевые значения, продолжают оценивать оставшиеся столбцы, пропуская null колонка.

select a.brand, b.boxId from a prod 
inner join b box on a.fruit = b.fruit 
where a.edible = b.edible and 
a.color = b.color and 
a.size = b.size 

brand  boxID 
farmers  10100 
fresh  19299 
. . . 
+0

Что вы имеете в виду нулевой? все поля, если только пустое или определенное поле? –

+0

все поля есть нуль – Led

+1

Несомненно, это то, что LEFT [OUTER] JOIN для – Strawberry

ответ

2

Да как этот

select a.brand, b.boxId 
from a prod 
inner join b box on a.fruit = b.fruit 
where (a.edible = b.edible OR a.edible IS NULL OR b.edible IS NULL) and 
     (a.color = b.color OR a.color IS NULL OR b.color IS NULL) and 
     (a.size = b.size OR a.size IS NULL OR b.size IS NULL) 
+0

ohh классно, попробовав. – Led

2

Попробуйте это:

select a.brand,b.boxId from 
(select a.brand,a.Fruit,a.edible,a.color,a.size from prod) as a 
inner join 
(select * from box) as b 
on a.fruit = b.fruit 
where a.color is not null and a.edible is not null and a.size is not null 
and b.color is not null and b.edible is not null and b.size is not null 
+0

Он покажет все не null, которые вы можете изменить, равно null, если вы хотите, чтобы все нулевые значения находились между двумя таблицами. –

+0

спасибо, но я принял JaydipJ, потому что он опубликовал первый – Led

+0

, это тоже хорошо спасибо за оценку ответа. –

Смежные вопросы