У меня есть таблица, которая содержит два внешних ключа. Мне нужно иметь возможность запрашивать эту таблицу и выполнять объединения, чтобы получить данные из других таблиц. У меня проблема в том, что второй внешний ключ, ну, я установил его как обнуляемый.
Мой стол выглядит примерно так ...
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
fk_meal INT NOT NULL, -- Foreign key to meals table
fk_drink INT NULL -- Foreign key to drinks table
);
Заказ можно разместить с напитком или без. Еда обязательна, а напиток - нет. Я хотел бы иметь возможность получать данные из базы данных, даже если fk_drink
равно NULL.
Я пытаюсь это сделать с помощью следующего запроса ...
SELECT * FROM orders
INNER JOIN meals ON meals.id = orders.fk_meal
LEFT JOIN drinks ON (drinks.id = orders.fk_drink OR orders.fk_drink = NULL)
Запрос запускается нормально, и я получаю данные обратно, но когда fk_drink
равен NULL, я получаю объект, содержащий ТОЛЬКО идентификатор. Когда fk_drink
фактически содержит напиток, я получаю все данные отлично.
Есть ли способ вернуть все остальные данные и NULL для fk_drink
, когда нет напитков или есть какой-то лучший способ справиться с этим?
Ваша помощь будет принята с благодарностью.