@Vadim1899

Как правильно составить sql запрос с условием?

Привет! Имеются следующие таблицы:

orders
id
date
type (book или deposit)
status (success, error)

orders_books
id
order_id
book_id
...

orders_deposits
id
order_id
...

можно ли запросом sql получить записи по следующему алгоритму: проходим по orders, если type === book, то берем нужную инфу из orders_books, если type === deposit, то берем из orders_deposits?

в голову приходит только несколько вариантов решения:
1. получить нужные записи orders и циклом проходить по каждой записи и отдельным запросом получать нужную инфу
2. получить тремя запросами данные из 3 таблиц и потом как-то отдельно склеивать, orders_books и orders_deposits чтобы сортировка была либо по order_id либо по времени
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Схематично:
SELECT orders.column,
       COALESCE(books.column, deposits.column) AS column
FROM orders 
LEFT JOIN books ON orders.type = 'book' AND orders.id = books.order_id
LEFT JOIN deposits ON orders.type = 'deposit' AND orders.id = deposits.order_id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы