2015-11-30 3 views
-1

Мне нужно сделать запрос в MySQL. Я должен найти все аэропорты, которые могут быть достигнуты максимум за 4 шага. Это мой запрос:Соединения в MySQL по значениям NULL

SELECT fp0.from AS start, fp1.from AS stop1, 
    fp2.from AS stop2, fp3.from AS stop3, 
    fp4.from AS stop4,fp4.to AS end 
FROM flightplan AS fp0 
LEFT JOIN flightplan AS fp1 ON(fp0.to=fp1.from) 
LEFT JOIN flightplan AS fp2 ON(fp1.to=fp2.from) 
LEFT JOIN flightplan AS fp3 ON(fp2.to=fp3.from) 
LEFT JOIN flightplan AS fp4 ON(fp3.to=fp4.from) 
WHERE fp0.from=6626 

Результат:

6626,"9895","4887","12836","10304","9915" 
6626,"9895","4887","12836","10304","4595"  
6626,"9895","4887","12836","10304","2685"  
6626,"9895","4887","12836","164","12081"  
6626,"9895","4887","12836","1652","8686"  
6626,"9895","4887","12836","1298","6682"  
6626,"9895","4887","12836","5965","10953"  
6626,"9895","4887","12836","5965","7212"  
6626,"9895","13070",**NULL**,NULL,NULL  
6626,"9895","13070","4859","12820","6908"  
6626,"9895",**NULL**,NULL,NULL,NULL 

В результате плохого в 2 балла (я пометив их со звездами). Проблема в том, что я проверяю, если аэропорт «a» a1 равен «от» аэропорта a2. Но если «в» аэропорт NULL, я получаю неправильный результат.

Может ли кто-нибудь помочь мне с моей проблемой? Спасибо

PS: Мне не разрешено делать это рекурсивно.

+0

Cab вы объяснить, почему NULL аэропортов неверны ? Вы говорите максимум 4. Те, кто идет только с одним или без остановки, останавливаются в другом аэропорту. – Dijkgraaf

+0

Спасибо за ваш комментарий. я добавляю объяснение, почему они ошибаются –

+1

Несколько традиций в макете кода: 'LEFT JOIN' (все присоединяется) в начале строки для удобства чтения, зарезервированные ключевые слова, такие как' from' и 'to', действительно являются * no * при использовании в качестве имени столбца: Путайтесь, когда вы читаете код, и в какой-то момент времени вы столкнетесь с этим при выполнении своих запросов. –

ответ

0

Если вы хотите, чтобы исключить строки с NULL, добавьте это в конце вашего запроса:

И fp4.to IS NOT NULL

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