Как ограничить результаты левого соединения
Возьмите случай с двумя таблицами:tbl_product
а такжеtbl_transaction
.tbl_product
перечисляет сведения о продукте, включая имена и идентификаторы, аtbl_transaction
Перечисляет транзакции, связанные с продуктами, и включает даты, идентификаторы продуктов, клиентов и т. д.
Мне нужно отобразить веб-страницу, показывающую 10 продуктов и для каждого продукта последние 5 транзакций. Пока нетLEFT JOIN
кажется, что запрос работает, и подзапрос ниже работал бы, если бы mysql мог разрешитьtx.product_id=ta.product_id
часть (терпит неудачу сНеизвестный столбец 'ta.product_id' в 'предложении where': [ОШИБКА: 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
Есть ли способ добиться нужного мне листингабез использования нескольких запросов в цикле?
Редактировать:
Это именно то, что мне нужно от 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
Конечно, это незаконно, но мне бы очень хотелось, чтобы этого не было!