У меня есть большое соединение с несколькими таблицами, выберите, где некоторые значения являются необязательными.SQL: join выберите несколько таблиц с отсутствующей строкой
Это запрос:
В таблицах из вышеуказанного запроса, таблица с именем services_reservation
со следующими столбцами (id
, services_id
, reservation_id
) полностью разряжен в этом случае, что делает значение что я выбираю из таблицы bike_shipping_reservation
NULL.
Как я могу сделать некоторые таблицы, которые я выбираю из опционального, если они пустые?
Вот SQL Fiddle с 1 пустой таблицей, вы можете увидеть результаты NULL в конце (только GROUP_CONCAT (DISTINCT g.service) должен быть NULL).
http://sqlfiddle.com/#!9/ee31b/6
Вот SQL Скрипка со все таблицами, имеющими значение в столбцах там, вы можете увидеть, что все значения возвращаются не NULL.
http://sqlfiddle.com/#!9/8bc033/34
Любые мысли?
Простое правило: * Никогда * используйте запятые в 'п от'. * Всегда * используйте явный синтаксис JOIN с условиями в разделе 'ON'. –
@ Gordon Linoff - Будет ли это исправлять мою проблему? – Speedwheelftw
Как уже говорилось в @GordonLinoff, используйте явный синтаксис JOIN, который позволит вам определить поведение комбинации (LEFT, INNER ...). Скорее всего, вы достигнете своего результата, используя боковые соединения, где это необходимо. –