以两个表为例:tbl_product
和tbl_transaction
。
tbl_product
列出产品详细信息,包括名称和 ID,同时tbl_transaction
列出涉及产品的交易,包括日期、产品 ID、客户等。
我需要显示一个显示 10 种产品的网页,以及每种产品的最后 5 笔交易。到目前为止,LEFT JOIN
似乎没有任何查询有效,如果 mysql 可以允许该tx.product_id=ta.product_id
部分,则下面的子查询将有效(在 'where 子句': [ERROR:1054] 中出现 Unknown column 'ta.product_id'失败)。
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
当然这是非法的,但我真的希望它不是!