Возьмем случай с двумя таблицами: tbl_product
и tbl_transaction
. tbl_product
перечисляет сведения о продуктах, включая имена и идентификаторы, а tbl_transaction
перечисляет транзакции с продуктами и включает даты, идентификаторы продуктов, клиентов и т.д.
Мне нужно отобразить веб-страницу, показывающую 10 продуктов и для каждого продукта, последние 5 транзакций. Пока что запрос LEFT JOIN
не работает, и подзапрос ниже работал бы, если бы mysql мог разрешить часть tx.product_id=ta.product_id
(с ошибкой Неизвестный столбец "ta.product_id" в "where clause": [ERROR: 1054 ]).
SELECT
ta.product_id,
ta.product_name,
tb.transaction_date
FROM tbl_product ta
LEFT JOIN (SELECT tx.transaction_date FROM tbl_transaction tx WHERE tx.product_id=ta.product_id LIMIT 5) tb
LIMIT 10
Есть ли способ достичь листинга, мне нужно без использования нескольких запросов в цикле?
Edit:
Это именно то, что мне нужно от MySQL:
SELECT ta.product_id, ta.product_name, tb.transaction_date ...
FROM tbl_product ta
LEFT JOIN tbl_transaction tb ON (tb.product_id=ta.product_id LIMIT 5)
LIMIT 10
Конечно, это незаконно, но я действительно хочу, чтобы это не было!