Как вы присоединяетесь к оператору if (условно) - PullRequest
0 голосов
/ 06 июля 2019

Я хочу сделать JOIN в MySQL, только если значение не равно нулю. Например:

$db = "SELECT users.name, users.email, cars.name
FROM users
LEFT JOIN cars ON cars.id = users.car_id
WHERE users.id = :id"

Но это утверждение не работает, потому что, если users.car_id равно нулю, оно ничего не вернет.

Вместо этого я все еще хочу, чтобы результаты вышли, и, очевидно, cars.name будет null. Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 06 июля 2019

Попробуйте создать исходный запрос в подзапросе, затем LEFT JOIN снова с таблицей пользователей. Это должно показать каждое имя в таблице пользователей, даже если исходный запрос возвращает NULL:

SELECT u.name,v.* FROM users u 
     LEFT JOIN
     ( SELECT users.name AS UserName, users.email, cars.name
        FROM users
        LEFT JOIN cars ON cars.id = users.car_id
        WHERE users.id = :id ) v 
ON u.name=v.UserName;
...