Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Прошу помощи составить SQL запрос


Evgenka

Recommended Posts

В стандартной таблице oc_product добавлено поле sklad_id.

Пытаюсь создать запрос, который отобразит все заказы в которых есть товар со skald_id, допустим, 4.

В недоумение вводит вложенность запроса, т.к. select делаю из таблицы order и далее уже фильтрую.

Сложность в том, что необходимо вывести все order_id где встречаются товары со skald_id = 4, а для этого необходимо обратиться сразу к order_product, что бы узнать все товары в заказе, после чего к product и отфильтровать эти товары по skald_id = 4.

 

Собственно в данный момент неоконченный запрос выглядит так:

SELECT * FROM `oc_order` AS o LEFT JOIN `oc_order_status` AS os ON (os.order_status_id = o.order_status_id AND os.language_id = '1') WHERE o.order_status_id = '5' AND DATE(o.date_added) >= '2021-08-18' AND DATE(o.date_added) <= '2021-08-18' AND o.order_id IN (как правильно выбрать все order_id) ORDER BY DATE(date_added)

 

Буду благодарен за любую помощь по составлению запроса.

Надіслати
Поділитися на інших сайтах


На скорую руку вот так

 

SELECT * FROM oc_order o
left join oc_order_status os ON (os.order_status_id = o.order_status_id)
left join oc_order_product op ON (o.order_id = op.order_id)
left join oc_product p ON (op.product_id = p.product_id )
WHERE os.language_id = '1'
and p.sklad = '4'

 

Надіслати
Поділитися на інших сайтах


SELECT * FROM `oc_order` AS o 
LEFT JOIN `oc_order_status` AS os ON (os.order_status_id = o.order_status_id AND os.language_id = '1') 
WHERE o.order_status_id > '0' 
AND DATE(o.date_added) >= '2021-08-18' AND DATE(o.date_added) <= '2021-08-18'
AND o.order_id IN (SELECT op.order_id FROM oc_order_product op LEFT JOIN oc_product p ON op.product_id = p.product_id WHERE p.skald_id = '4') 
ORDER BY DATE(date_added)

 

Сделал вот так, вроде бы получилось то, что задумывалось, но на сколько это правильно...

Надіслати
Поділитися на інших сайтах


SELECT DISTINCT o.* FROM oc_order o
join oc_order_product op ON (o.order_id = op.order_id)
join oc_product p ON (op.product_id = p.product_id )
WHERE p.skald_id = '4

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.