Возьмите случай с двумя таблицами: tbl_product
и tbl_transaction
.
tbl_product
списков деталей продуктов, включая имена и идентификаторы в то время как tbl_transaction
списки сделок с участием продуктов и включает в себя дату, продукт-идентификаторы, клиент и т.д.Как ограничить результаты LEFT JOIN
мне нужно отобразить веб-страницу, показывающую 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
Конечно, это незаконно, но я действительно хочу это не было!
У вас нет предложения «ON» для вашего присоединения? –
Даже с предложением ON он по-прежнему извлекает более 5 транзакций. Если я удалю 'tx.product_id = ta.product_id' и изменю на' LEFT JOIN (* my limit sql *) tb ON tb.product_id = ta.product_id', все еще не то, что я хочу ~ –
Имеет ли ваша таблица транзакций 'tbl_transaction 'есть идентификатор? – gnarf