У меня есть таблица с идентификаторами столбцов, product_type, product_id, количество все как целое. Мне нужно выбрать данные из других таблиц в зависимости от product_type. Например. Если product_type равно 0, тогда выберите из таблицыA, если product_type равен 1, затем выберите из tableB и т. Д. Я попытался найти решение, как создать выбор, но безуспешно. Может кто-то мне помочь, пожалуйста. Я ценю любую помощь. Спасибо.SQLite select from mutliple tables на основе значения столбца
ответ
Вступите в основную таблицу с отдельными таблицами продуктов, но используйте левое соединение и включите фильтр product_type = x
в состояние соединения, так что на самом деле соединяются только нужные записи.
Это приведет к множеству значений NULL
; использовать coalesce
, чтобы получить не- NULL
значение для выхода:
SELECT sales.id,
sales.quantity,
sales.product_type,
coalesce(tableA.name, tableB.name) AS name,
coalesce(tableA.color, tableB.color) AS color,
tableA.numberOfAs -- is NULL for other product types
FROM sales
LEFT JOIN tableA ON sales.product_type = 0 AND
sales.product_id = tableA.product_id
LEFT JOIN tableB ON sales.product_type = 1 AND
sales.product_id = tableB.product_id
WHERE ...
У меня возникнет соблазн превратить это в представление, которое я мог бы сделать простым выбором ... –
Похоже, вам нужно сазе
SELECT
CASE
WHEN product_type = 1 THEN (SELECT column FROM table1 WHERE ...)
WHEN product_type = 2 THEN (SELECT column FROM table2 WHERE ...)
END
FROM table
Вероятно, можно было бы сделать более эффективным использованием JOINS, но это будет зависеть от вашей схемы.
Я думаю, что OP хочет выбрать более одного поля из 'TableA',' TableB' в зависимости от product_type в 'table', а не только из одного поля – Saju
Затем более одного оператора CASE. –
- 1. Sqlite select * from multiple tables
- 2. Sqlite select statement from 2 tables
- 3. SQL select from more tables
- 4. MYSQL SELECT FROM MULTIPLE COLUMS FROM TABLES
- 5. Sqlite - Count Уникальные значения на основе столбца
- 6. HQL-Select from 2 tables
- 7. Oracle Select Query на основе значения столбца
- 8. MYSQL UPDATE SELECT from Two Tables
- 9. C# - MySQL универсальный метод запроса SELECT для mutliple tables
- 10. SQL SELECT FROM TWL TABLES INNER JOIN
- 11. Entityframework single select from inested tables
- 12. SQL select count from multiple tables
- 13. выберите * from (select ...) sqlite python
- 14. SQLITE-запрос для получения имени столбца на основе значения столбца
- 15. php mysql select from columns from 2 tables Join
- 16. SQLite: проблема производительности на SELECT * FROM
- 17. Динамический псевдоним столбца на основе значения столбца
- 18. SQLite Сумма столбца на основе диапазона дат
- 19. SELECT несколько столбцов на основе значения одного столбца
- 20. SQL SELECT заявления на основе отдельного столбца значения
- 21. SQLite SELECT query - столбец GROUP CONCAT на основе значения другого столбца
- 22. MySQL: установка условия в запрос SELECT на основе значения столбца
- 23. Sqlite: SELECT * BUT id FROM Таблица
- 24. WordPress Manual SELECT MySQL на основе значения столбца postmeta
- 25. SQL Select Column From Table на основе другого оператора Select
- 26. Поиск нескольких столбцов в sqlite SELECT FROM
- 27. sqlite объединить данные столбца на основе count
- 28. SQLite query three tables
- 29. SQL SELECT Данные из другой таблицы на основе значения столбца
- 30. Resample на основе значения столбца
Пожалуйста, измените свой пост, чтобы включить одну из ваших попыток решения. Спасибо. – bernie
Дополнительная информация. Пожалуйста, покажите структуры таблиц и укажите, какие столбцы вы хотите увидеть в наборе результатов. –
, как правило, это указывает на недостаток в структуре вашего БД, когда вам нужно делать запросы, которые динамически выбирают исходную таблицу. Покажите свой полный дизайн базы данных и, возможно, мы сможем помочь. – JohnFx