motto13
@motto13
Вечно молодой

Как получить данные из связаных таблиц?

create table product (id int, name varchar(64));
create table item_1 (id int, price int);
create table item_2 (id int, price int);
create table relations (id int, id_product int, item_1_id int, item_2_id int);
insert into product values
(1, 'Ноутбук Acer Aspire 7'),
(2, 'Ноутбук ASUS TUF Gaming F15'),
(3, 'Ноутбук Lenovo IdeaPad 3 15ALC6'),
(4, 'Ноутбук Acer Aspire 7');
insert into item_1 values
(1, 100),
(2, 125),
(3, 80),
(4, 300);
insert into item_2 values
(1, 1200),
(2, 355),
(3, 200),
(4, 300);
insert into relations values
(1, 1, 1, 3),
(2, 2, 1, 2),
(3, 3, 3, 4),
(4, 4, 4, 1);
SELECT price as rq_price_item_1 FROM item_1 WHERE id = 2; 
SELECT price as rq_price_item_2 FROM item_2 WHERE id = 3;

https://sqlize.online/sql/mysql57/2ff17da2499ad1e4...
Каким запросом или несколькими, на основе входящих данных получить нужные записи с таблицы product ?
На входе две цены rq_price_item_1 и rq_price_item_2
Выборка по table relations где ( rq_price_item_1 >= item_1.price AND rq_price_item_2 >= item_2.price)

--------------------------------
Это?
SELECT * FROM product WHERE id IN
(SELECT id_product FROM relations WHERE
item_1_id in (SELECT id FROM item_1 WHERE price >= 125) AND 
item_2_id in (SELECT id FROM item_2 WHERE price >= 200) 
)
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
shabelski89
@shabelski89
engineer
SELECT
    p.name,
    i1.price AS price1,
    i2.price AS price2
FROM
    relations r
    LEFT JOIN product p ON r.id_product = p.id
    LEFT JOIN item_1 i1 ON i1.id = r.item_1_id
    LEFT JOIN item_2 i2 ON i2.id = r.item_2_id
WHERE
    i1.price >= 125
    AND i2.price >= 200;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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