请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

AAA努力才幸福

初级会员

26

主题

77

帖子

325

积分

初级会员

积分
325

[已处理] mysql多表查询

AAA努力才幸福
初级会员   /  发表于:2022-10-10 10:51  /   查看:1016  /  回复:7
100金币



工作簿
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

改了一下: SELECT A.ID AS 计划物料ID FROM 采购计划明细表 A WHERE NOT EXISTS(SELECT * FROM 包明细 B WHERE A.ID = B.计划物料ID) UNION SELECT A.计划物料ID FROM ( SELECT A.计划物料ID,MAX(B.ID) AS 包ID -- 猜测包主表中的ID字段应该是主键,包ID越大创建日期越晚,这样简单。 FROM 包明细 A INNER JOIN 包主表 B ON A.包ID = B.ID GROUP BY A.计划物料ID )A INNER JOIN 包主表 B ON A.包I ...

7 个回复

倒序浏览
最佳答案
最佳答案
leilei6120悬赏达人认证
高级会员   /  发表于:2022-10-10 10:51:36
来自 7#
本帖最后由 leilei6120 于 2022-10-10 17:17 编辑
AAA努力才幸福 发表于 2022-10-10 15:38
无法运行,我用的是mysql

改了一下:

SELECT A.ID AS 计划物料ID
FROM 采购计划明细表 A
WHERE NOT EXISTS(SELECT * FROM 包明细 B WHERE A.ID = B.计划物料ID)

UNION

SELECT A.计划物料ID
FROM
(
  SELECT A.计划物料ID,MAX(B.ID) AS 包ID    -- 猜测包主表中的ID字段应该是主键,包ID越大创建日期越晚,这样简单。
  FROM 包明细  A
  INNER JOIN 包主表  B ON A.包ID = B.ID
  GROUP BY A.计划物料ID
)A INNER JOIN 包主表 B ON A.包ID = B.ID
WHERE B.开标状态ID=5002




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +5 收起 理由
Chelsey.Wang + 5 赞一个!

查看全部评分

回复 使用道具 举报
leilei6120悬赏达人认证
高级会员   /  发表于:2022-10-10 13:43:04
2#
你的包主表的ID 不是主键吗?不唯一吗?为什么查开标状态是5002的时候查最新日期的呢?
回复 使用道具 举报
AAA努力才幸福
初级会员   /  发表于:2022-10-10 13:58:40
3#
本帖最后由 AAA努力才幸福 于 2022-10-10 14:04 编辑
leilei6120 发表于 2022-10-10 13:43
你的包主表的ID 不是主键吗?不唯一吗?为什么查开标状态是5002的时候查最新日期的呢?

包明细内的物料可能出现在多个包内

5002代表流标状态

流标的包内的明细在下一批次选择的时候要显示出来的,

某种物料有可能多次流标,直到中标为止,
所以才需要判断这个材料的中标状态,以最后一次中标后就不在显示了


整个流程:查询出计划明细表中未在包明细中出现过的物料 和 出现过但是最后一次为流标状态(5002)的物料
回复 使用道具 举报
leilei6120悬赏达人认证
高级会员   /  发表于:2022-10-10 14:54:20
4#
-- 没有出现在包明细中的计划物料ID
SELECT A.ID AS 计划物料ID
FROM 采购计划明细表 A
WHERE NOT EXISTS(SELECT TOP 1 1 FROM 包明细 B WHERE A.ID = B.计划物料ID)

UNION

--在包明细中出现过,但最后一次创建的包的开标状态ID是5002(流标状态)
SELECT A.计划物料ID
FROM
(
  SELECT A.计划物料ID,MAX(B.ID) AS 包ID    -- 猜测包主表中的ID字段应该是主键,包ID越大创建日期越晚,这样简单。
  FROM [包明细] A
  INNER JOIN 包主表 B ON A.包ID = B.ID
  GROUP BY A.计划物料ID
)A INNER JOIN 包主表 B ON A.包ID = B.ID
WHERE B.开标状态ID=5002


评分

参与人数 1金币 +5 收起 理由
Chelsey.Wang + 5 赞一个!

查看全部评分

回复 使用道具 举报
AAA努力才幸福
初级会员   /  发表于:2022-10-10 15:38:24
5#
本帖最后由 AAA努力才幸福 于 2022-10-10 15:40 编辑
leilei6120 发表于 2022-10-10 14:54
-- 没有出现在包明细中的计划物料ID
SELECT A.ID AS 计划物料ID
FROM 采购计划明细表 A

无法运行,我用的是mysql
回复 使用道具 举报
leilei6120悬赏达人认证
高级会员   /  发表于:2022-10-10 16:14:07
6#
AAA努力才幸福 发表于 2022-10-10 15:38
无法运行,我用的是mysql

抱歉,我电脑上没装mysql没办法测试。你可以先理解一下,然后按照mysql的语法改动一下。
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-10-10 17:34:04
8#
感谢楼上大佬的支持!
如果您的问题已解决,可以设置最佳答案给有帮助到你的回复哟~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部