3个连接的mysql表的最新记录
几天来,我一直在绕圈子问这个问题,这让我发疯。我已经找到了使用maxdate和left联接的部分答案,但尚未获得正确的结果,因此非常感谢您的帮助 我有三张桌子:- 存货 身份证件 很多其他领域 销售价格 身份证件 日期 *票证类型 *库存标识 车票类型 身份证件 车票名称 每次更改销售价格时,销售价格表都会更新日期和新的票证类型。我只想显示:- 查找最新的销售价格记录 显示与此相关的库存信息 显示与此相关的票证名称 我提出的问题是:-3个连接的mysql表的最新记录,mysql,sql,join,Mysql,Sql,Join,几天来,我一直在绕圈子问这个问题,这让我发疯。我已经找到了使用maxdate和left联接的部分答案,但尚未获得正确的结果,因此非常感谢您的帮助 我有三张桌子:- 存货 身份证件 很多其他领域 销售价格 身份证件 日期 *票证类型 *库存标识 车票类型 身份证件 车票名称 每次更改销售价格时,销售价格表都会更新日期和新的票证类型。我只想显示:- 查找最新的销售价格记录 显示与此相关的库存信息 显示与此相关的票证名称 我提出的问题是:- $result = " SELECT DIS
$result = "
SELECT DISTINCT inv.*, tt.ticket_name, MAX(sp.date) AS spdate
FROM sale_price sp
LEFT
JOIN ticket_type tt
ON sp.ticket_type_id = tt.id
JOIN inventory inv
ON sp.inventory_id = inv.id
GROUP
BY sp.inventory_id
";
但它显然不起作用。我真的很感激你能给予我的任何帮助,如果不是太多的话,请告诉我我哪里出了问题
多谢期待 如果您只想知道所有记录的最新记录,则可以使用以下查询:
SELECT
s.ticket_type_id,
s.inventory_id,
t.ticket_name,
i.lots of other fields
FROM
sale_price s
INNER JOIN
inventory i
ON
s.inventory_id = i.id
INNER JOIN
ticket_type t
ON
s.ticket_type_id = t.id;
WHERE
s.date = (
SELECT
MAX(s1.date)
FROM
sale_price s1
)
如果您需要每个库存项目的最新记录,那么您必须使用子选择的WHERE子句中库存id的相等性来扩展此查询:
SELECT
s.ticket_type_id,
s.inventory_id,
t.ticket_name,
i.lots of other fields
FROM
sale_price s
INNER JOIN
inventory i
ON
s.inventory_id = i.id
INNER JOIN
ticket_type t
ON
s.ticket_type_id = t.id;
WHERE
-- gives us the newest date per inventory_id
s.date = (
SELECT
MAX(s1.date)
FROM
sale_price s1
WHERE
s.inventory_id = s1.inventory_id
)
顺便说一句,这是一个相关子查询,它可能会变慢。首先,非常感谢您的回复-我不知道我可以在WHERE子句中使用子查询,这打开了一个全新的可能性世界!我尝试了您提供的查询,但它表示语法错误。我相信这是我做过的,我已经经历过很多次了,但我看不出问题在哪里——有什么想法吗?我将发布另一条评论,因为我将用尽空间…查询失败:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第7行的“s.inventory\u id=i.id内部连接票据\u type t ON”附近使用的正确语法,选择s.ticket\u type\u id、s.inventory\u id、t.ticket\u name,i.*从售价s中选择MAXs1.date,其中s.date=从售价s2中选择MAXs1.date,其中s1.inventory\U id=s2.inventory\U id内部加入s上的库存i.inventory\U id=i.id内部加入票证\U类型\U id=t.id可能我需要睡一会儿。JOIN子句必须在WHERE子句之前。我已经编辑了我的答案。再次感谢你。“字段列表”中的“未知列”s1.date“我的天啊,情况越来越糟了。我第二个问题中的一些愚蠢的错误。我使用了别名s和s1,所以我应该坚持使用它。。。就像现在一样。请尽量理解该声明,而不是简单地复制和粘贴。