Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных: SQL > Помогите составить SQL запрос |
Автор: rownong@yandex.ru 25.12.23, 15:31 |
Здравствуйте. Помогите составить SQL запрос чтобы я могу его исполнить в PhpMyAdmin. SQL-ЗАПРОС: Из таблицы "4_2_products_from_orders_yandex_market" выбрать все записи в которых (status_application = " 2.1. Товар в зарезервирован на 3 дня" или " "2.2. Товар в зарезервирован на 7 дней") и поле "order_sima_land"=0 Связь по полю "order_sima_land с таблицей 11_3_orders_yandex_market_from_shipments" И в таблице "11_3_orders_yandex_market_from_shipments" поле Поле "number_shipment" = 44713430 |
Автор: MIF 25.12.23, 23:11 |
В приведенном запросе LEFT JOIN работает как INNER JOIN. Надо перенести фильтр этой таблицы из WHERE to ON чтобы он работал как LEFT. |
Автор: rownong@yandex.ru 26.12.23, 06:12 |
Цитата MIF @ В приведенном запросе LEFT JOIN работает как INNER JOIN. Надо перенести фильтр этой таблицы из WHERE to ON чтобы он работал как LEFT. Могли бы написать как в итоге должно выглядеть? Я не программист. |
Автор: Akina 26.12.23, 12:02 |
Запрос лучше оформить так (использование алиасов и WHERE IN делают его более читаемым): <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SELECT t1.*, t2.* FROM 4_2_products_from_orders_yandex_market AS t1 JOIN 11_3_orders_yandex_market_from_shipments AS t2 ON t1.order_number = t2.number_order_yandex_market LEFT JOIN 4_3_status_yandex_market AS t3 ON t2.number_order_yandex_market = t3.number_order_yandex_market AND t3.status = 'CANCELLED' WHERE t1.status_application IN ('2.1. Товар в зарезервирован на 3 дня', '2.2. Товар в зарезервирован на 7 дней') AND t1.order_sima_land = 0 AND t2.number_shipment = 44659422 AND t3.number_order_yandex_market IS NULL; Но лучше использовать NOT EXISTS: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SELECT * FROM 4_2_products_from_orders_yandex_market AS t1 JOIN 11_3_orders_yandex_market_from_shipments AS t2 ON t1.order_number = t2.number_order_yandex_market WHERE t1.status_application IN ('2.1. Товар в зарезервирован на 3 дня', '2.2. Товар в зарезервирован на 7 дней') AND t1.order_sima_land = 0 AND t2.number_shipment = 44659422 AND NOT EXISTS ( SELECT NULL FROM 4_3_status_yandex_market AS t3 WHERE t2.number_order_yandex_market = t3.number_order_yandex_market AND t3.status = 'CANCELLED' ); |