Получите все продукты и сначала поставьте продукт определенного заказа.

У меня есть 3 таблицы: продукты , заказы и orderLines (order_id, product_id).

У меня есть запрос sql, чтобы понять, что почти невозможно сделать only one query .
Есть ли способ иметь только один запрос:

  • Все продукты, но сначала показывающие продукты определенного заказа; это означает, что: для order A : покажите product1 , product2 .. в порядке orderA's orderLines сначала, чем following products (не упорядоченные).

PS: Я знаю, что можно добиться этого с union двух запросов, но было бы лучше сделать это only one query .

Вы можете поместить подзапрос в оговорку order by . В этом случае exists подзапрос:

 select p.* from products p order by (exists (select 1 from orderlines ol where p.productid = ol.productid and o.orderid = ORDERA ) ) desc;