Задавайте вопросы, мы ответим
Вы не зашли.
Есть две таблицы:
таблица c_st - товары (содержит поля id-номер товара и name-наименование)
| id | name |
| 1 |товар1|
| 2 |товар2|
| 3 |товар3|
таблица c_sorder - количество определенных товаров в каждом заказе
(id-номер по порядку, zid-номер заказа, sid-номер товара(совпадает с id из предыдущей таблицы), kol-количество заказанного товара.)
| id | zid | sid | kol |
| 1 | 1 | 3 | 2 |
| 2 | 2 | 1 | 1 |
| 3 | 3 | 1 | 3 |
| 4 | 3 | 2 | 1 |
Нужен запрос который покажет в итоге наименование всех товаров и их количество в определенном заказе.
Результат должен выглядеть так -
| c_st.id | c_st.name | c_sorder.kol | c_sorder.zid |
| 1 | товар1 | 3 | 3 |
| 2 | товар2 | 1 | 3 |
| 3 | товар3 | NULL | NULL |
Запрос вида
SELECT
c_st.id,
c_st.name,
c_sorder.kol,
c_sorder.zid
FROM c_st
LEFT JOIN c_sorder ON c_sorder.sid=c_st.id
WHERE c_sorder.zid = 3
ORDER BY c_st.id
Выдает только те товары которые есть в таблице c_sorder, то есть не показывает те товары которые не заказаны (из за WHERE).
А нужно вывести все названия товаров из таблицы "c_st", а затем, из таблицы "c_sorder" вывести их количество для одного конкретного заказа если они там есть, а если нет вывести NULL.
Можно как то это в одном запросе сделать, а то пока пришлось селект внутри селекта в цикле писать - не хорошо ((..
Неактивен
SELECT ..
FROM c_st
LEFT JOIN (SELECT .. FROM c_sorder WHERE c_sorder.zid = 3) t ON t.sid=c_st.id
ORDER BY c_st.id;
Неактивен
Большое Спасибо!
Неактивен