【发布时间】:2015-01-02 10:43:32
【问题描述】:
SELECT smirt.id as mid,
pc.packet_name as pname,
pcs.packet_name as mainn,
smirt.p_status as st ,
smirt.new_value as weight ,
smirt.packet_id,
smirt.parent_packet_id
FROM issue_receive_process AS smirt
LEFT JOIN packet_creation AS pc ON pc.id = smirt.packet_id
LEFT JOIN packet_creation AS pcs ON pcs.id = pc.parent_packet_id
WHERE smirt.type = 53
AND smirt.main_kapan_id IN(1,2)
ORDER BY smirt.packet_id
从上面的查询我得到以下详细信息:
但是上面是错误的
因为 pname 是我的子包 mainn 是我的主数据包
实际上我需要(应该是)pname(NULL,0004)和mainn(0003,0002)如下(下图是编辑图像):
因为 0003 , 0002 是主包, 0004 是 0002 的子包 ... 0003 没有任何子包 ....
如果我错了,有什么可以帮助我的。
谢谢
更新:父表图像(issue_receive_process AS smirt)
根据用户:KISHORE BELOW QUERY:
SELECT smirt.id
,smirt.packet_id
,smirt.main_kapan_id
,pc.id
,pc.packet_name
,pc.parent_packet_id
FROM issue_receive_process AS smirt
LEFT JOIN packet_creation AS pc ON pc.id = smirt.packet_id
WHERE pc.packet_name IN ('0002','0003','0004')
ORDER BY smirt.packet_id
结果如下:
第二次更新表: packet_creation 下面的详细信息按照以下查询
SELECT *
FROM `packet_creation`
WHERE `id`
IN ( 5, 11, 9 )
LIMIT 0 , 30
【问题讨论】:
-
您能否也发布 packet_creation 表的匹配数据。至少足以重现问题。
-
先生,packet_creation 表中有很多数据 ..ok 让我看看 ..谢谢回复 ..会试着把它放在这里 min
-
查看测试数据,对于中间为 4 的记录,packet_id 为 5。 Packet_id 5 的数据包名称为“0003”(因此 pname 为“0003”),父数据包 id 为0. 但是,对于 id 为 0,packet_creation 上没有记录,因此没有匹配的父数据包,因此 mainn 为空。基于此,您获得的结果对于您拥有的数据是正确的。
-
先生,从顶部...第一张图片是错误的..第二张图片是我想要的(我已经在编辑中显示了).... 0003 和 0002 与 parent_packet_id 为 0 .. 其中0004 的父数据包 ID 为 9 ...因此 0002 是主数据包,而 0004 是子数据包 .. 属于 0002 ....所以最终输出应该是 pname: (NULL,0004) ,其中包含子数据包详细信息 ..where mainn : (0003,0002) 这是 mainpacket..但我得到的是来自前 1 个磨损的图像
-
简而言之,我需要如下: mainpacket : subpacket ---- (0003,0002) : (NULL,0004)... 因此 0003,0002 是主数据包,而 0004 是 0002 的子数据包。 .. 0003(主数据包)没有任何子数据包,因此它为 NULL ..... 但我得到的是 (NULL ,0002) : (0003,0004) 这是错误的......因为 0003 是我的主数据包应该是 (0003,0002) : (NULL,0004),....希望你理解