【发布时间】:2010-07-27 23:08:10
【问题描述】:
以两个表为例:tbl_product 和 tbl_transaction。tbl_product 列出产品详细信息,包括名称和 ID,而 tbl_transaction 列出涉及产品的交易,包括日期、产品 ID、客户等.
我需要显示一个网页,其中显示 10 种产品以及每种产品的最近 5 笔交易。到目前为止,没有LEFT JOIN 查询似乎有效,如果mysql 可以允许tx.product_id=ta.product_id 部分,下面的子查询将有效(在'where 子句'中出现Unknown column'ta.product_id'失败:[错误: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
当然这是非法的,但我真的希望不是这样!
【问题讨论】:
-
您的加入没有“ON”子句?
-
即使有 ON 子句,它仍然会获取超过 5 个事务。如果我把
tx.product_id=ta.product_id去掉,修改成LEFT JOIN (*my limiting sql*) tb ON tb.product_id=ta.product_id,还是不是我想要的~ -
你的事务表
tbl_transaction有id吗? -
@gnarf 是的,有一个 transaction_id 列
标签: mysql sql subquery left-join mysql-error-1054