Как правильно составить 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 либо по времени
Дополнительно:
Схематично:
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 |
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
- спасибо
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для составления SQL запроса с условием нужно использовать ключевое слово WHERE после указания таблицы, чтобы задать условие выборки данных. В условии можно использовать различные операторы сравнения (например, =, , >, =, <=), логические операторы (AND, OR, NOT) и функции (например, LIKE для поиска по шаблону).
Пример SQL запроса с условием:
SELECT * FROM users WHERE age > 18;
В данном примере мы выбираем всех пользователей из таблицы "users", у которых возраст больше 18 лет.
Если нужно задать несколько условий, их можно комбинировать с помощью логических операторов:
SELECT * FROM products WHERE price >= 100 AND category = 'Electronics';
Этот запрос выбирает все продукты из таблицы "products" с ценой не менее 100 и категорией "Electronics".
Также можно использовать функции и операторы для более сложных условий:
SELECT * FROM orders WHERE DATE(created_at) = CURDATE() AND total_amount > 1000;
Этот запрос выбирает все заказы из таблицы "orders", созданные сегодня, с общей суммой больше 1000.
Важно помнить, что правильное использование условий в SQL запросе помогает точно выбирать нужные данные и оптимизировать работу с базой данных.