Как реализовать запрос в sqlite между тремя таблицами?

Рейтинг: 0Ответов: 1Опубликовано: 06.08.2023

Такой вопрос есть три таблицы user, product,order_basket связаны между собой связью many-to-many. Вид таблиц. Пытаюсь одним запросом получить код товаров из таблицы product. Пример кода:

cur = con.cursor()
cur.execute("""
SELECT product FROM product WHERE id =
(SELECT id_product FROM order_basket WHERE id_user =
(SELECT id FROM users WHERE id_user=?))
 """,(message_user_id,))

при таком запросе возвращает первое совпадение.
Если разбить на отдельные запросы то запрос SELECT id_product FROM order_basket WHERE id_user возвращает список из кортежей id_product [(9,), (12,), (9,), (13,), (14,), (13,), (15,), (16,), (7,)] дальнейшая обработка идет через циклы, что хотелось избежать. Возможно ли в одном или двух запросах реализовать получение всех совпадений по коду продукта?

Ответы

▲ 0Принят

У меня другие данные, потому что у вас картинка.

SELECT t1.name, t3.id, product
FROM (order_basket as t2 LEFT JOIN users as t1 ON t1.id=t2.id_user) 
LEFT JOIN product as t3 ON t3.id=t2.id_product
WHERE t1.name='user1''

user1   9   F00450
user1   12  F01678
user1   9   F00450
user1   13  F00735
user1   14  F92449
user1   13  F00735
user1   15  F90173
user1   16  F18000
user1   17  F99099
user1   8   F00510
user1   8   F00510