Есть таблица вида:
id_sim | sim_id_status | sim_user | sim_comp | sim_phone | sim_number
Из этой таблицы делаю выборку данных:
$sim = array();
$sim_query = $dbquery->query("SELECT id_sim, id_sim_status, name_sim_status, sim_user, first_name, middle_name, surname, dolzh, short_name_comp, sim_phone, sim_number FROM sim, company, sim_status, users WHERE sim.sim_user=users.users_id AND sim.sim_comp=company.id_comp AND sim.sim_id_status=sim_status.id_sim_status");
$sim_query->execute();
while($row_sim = $sim_query->fetch(PDO::FETCH_ASSOC)) {
$sim[] = $row_sim;
}
return $sim;
Как видно, в блоке:
sim.sim_user=users.users_id
идет сравнение двух таблиц. Если в таблице sim_user будет NULL или 0, то строка целиком не выводится. Мне необходимо сделать, что бы выводилась, так как данное поле содержит информацию о пользователе только в том случае, если ему выдана данная sim.
Вопрос: как можно сделать вывод всех строк, в том числе и пустые? Читал и пробовал LEFT JOIN - не помогло. Если не сложно, прошу дать рабочий код. Или указать в какую сторону копать.
Как на счёт
SELECT id_sim, id_sim_status, name_sim_status, sim_user, first_name,
middle_name, surname, dolzh, short_name_comp, sim_phone, sim_number
FROM sim
JOIN company ON sim.sim_comp=company.id_comp
JOIN sim_status ON sim.sim_id_status=sim_status.id_sim_status
LEFT JOIN users ON sim.sim_user=users.users_id
Общий совет: не пишите
FROM table1, table2
WHERE table1.table2_id = table2.id
Пишите
FROM table1
JOIN table2 ON table1.table2_id = table2.id
Так получается более чистый код, потому что вы оставляете WHERE для реальный фильтров а не для остатков синтакся JOINов
Продвижение своими сайтами как стратегия роста и независимости