Как вывести связанные между собой записи из двух таблиц сразу (база данных)?
Есть две таблицы и пример их заполнения:
Таблица Основная:
Таблица Вспомогательная:
Необходимо вывести на экран данные из этих двух таблиц таким образом, чтобы из Основной таблицы в тех записях, где значение столбца condition равно 1 выводилась эта запись + связанные с ней записи из Вспомогательной таблицы (связь происходит по столбцам id и id_item).
Пример вывода:
Подскажите, как реализовать такой комплексный запрос в базу данных? Чтобы на выходе получился готовый ассоциативный массив, который можно было бы вывести на экран и легко с ним работать (фильтровать, сортировать и тд)?
CREATE TABLE table_1 (
id INTEGER PRIMARY KEY,
name TEXT,
_sum INTEGER,
_condition TEXT
);
INSERT INTO table_1 VALUES (22 , "Часы" , 12000 , NULL) ,
(43 , "Клавиатура" , 4900 ,NULL),
(78 , "Телефон" , 30000 ,1) ,
(9 , "Монитор" , 19000 ,1 ),
(12 , "Картина" , 8000 ,NULL);
SELECT * FROM table_1;
CREATE TABLE table_2(
id INTEGER PRIMARY KEY,
id_item INTEGER,
name TEXT ,
price INTEGER
);
INSERT INTO table_2 VALUES (1 , 78 , "Samsung" , 12000 ),
(2 , 78 , "Nokia" , 10000) ,
(3 , 78 , "Panasonic" , 8000) ,
(4 ,9 , "LG" , 7000) ,
(5, 9 , "Acer" , 1200 );
SELECT * FROM table_2;
Output:
+----+----------------------+-------+------------+
| id | name | _sum | _condition |
+----+----------------------+-------+------------+
| 9 | Монитор | 19000 | 1 |
| 12 | Картина | 8000 | NULL |
| 22 | Часы | 12000 | NULL |
| 43 | Клавиатура | 4900 | NULL |
| 78 | Телефон | 30000 | 1 |
+----+----------------------+-------+------------+
+----+---------+-----------+-------+
| id | id_item | name | price |
+----+---------+-----------+-------+
| 1 | 78 | Samsung | 12000 |
| 2 | 78 | Nokia | 10000 |
| 3 | 78 | Panasonic | 8000 |
| 4 | 9 | LG | 7000 |
| 5 | 9 | Acer | 1200 |
+----+---------+-----------+-------+
Ответы (1 шт):
Автор решения: Иван Р
→ Ссылка
SELECT table_1.id, table_1.name AS main_name, table_1._sum,
table_1._condition, table_2.name AS secondary_name, table_2.price
FROM table_1
INNER JOIN table_2 ON table_1.id = table_2.id_item
WHERE table_1._condition = 1;
Результат:
+---+-----------+-------+-----------+--------------+--------+
|id |main_name |_sum |_condition |secondary_name|price |
+---+-----------+-------+-----------+--------------+--------+
|78 |Картина2 |30000 |1 |Samsung |12000 |
+---+-----------+-------+-----------+--------------+--------+
|78 |Картина2 |30000 |1 |Nokia |10000 |
+---+-----------+-------+-----------+--------------+--------+
|78 |Картина2 |30000 |1 |Panasonic |8000 |
+---+-----------+-------+-----------+--------------+--------+
|9 |Клавиатура |19000 |1 |LG |7000 |
+---+-----------+-------+-----------+--------------+--------+
|9 |Клавиатура |19000 |1 |Acer |1200 |
+---+-----------+-------+-----------+--------------+--------+


