Made a triple left / right join to display the results of the three queries in three columns.
SELECT t1.order_number as order_t1, t2.order_number as order_t2, t3.order_number as order_t3 FROM ( SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t1 LEFT JOIN (SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY) AND DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t2 ON t1.order_id = t2.order_id LEFT JOIN (SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY) AND DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t3 ON t2.order_id = t3.order_id UNION ALL SELECT t1.order_number as order_t1, t2.order_number as order_t2, t3.order_number as order_t3 FROM ( SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t1 RIGHT JOIN (SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY) AND DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t2 ON t1.order_id = t2.order_id RIGHT JOIN (SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY) AND DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t3 ON t2.order_id = t3.order_id Displays data in the first and third columns correctly, in the second one is null. If you do not join the third query, then it displays the results of the first and second columns correctly. Why can not display the result of the second column? And is it possible to remove null values from all columns? UPD. If you make only two requests, then displays the data in both columns
SELECT t1.order_number as order_t1, t2.order_number as order_t2 FROM ( SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t1 LEFT JOIN (SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY) AND DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t2 ON t1.order_id = t2.order_id UNION ALL SELECT t1.order_number as order_t1, t2.order_number as order_t2 FROM ( SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t1 RIGHT JOIN (SELECT order_number,`order`.order_id FROM `order` inner join order_delivery_data on `order`.order_id = order_delivery_data.order_id where order_status = 'delivered' AND order_statusUpdatedAt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY) AND DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) and order_delivery_data_name in ('Казахстан Курьеры') ) as t2 ON t1.order_id = t2.order_id
ON t1.order_id = t3.order_id, then tried, all the same the second column empty. - cruimЛогика следующая- well, I said the same, in other words, just. - Akinafrom t1 left join t2 on t1.f1=t2.f1gives entries for t2, andfrom t1 left join t2 on t1.f1=t2.f1 left join t3 on tX.f1=t3.f1for t2 does not give them, there is a difference between requests for t1-t2. - Akina