我正在尝试从4个表中检索记录,并想在左侧Join中使用子查询。所以基本上,我有 表a是开口表 o,id,o.namesdesc
表b是所有项目的表 b.id,b.titledesc,b,状态,b.edate
表a_b是已更改为项目的所有开口的表,就像一对多的联结表一样 o.id,b.id
表br是与其他项目的关系表 b.id b_rel_code(这也是与其他项目相关的b.id)
我要获取所有空缺,检查表a_b中是否有项目代码,获取项目代码与其他项目代码的关系,检查项目的状态,并获取项目的所有结束日期
非常感谢您的帮助。很久以来我一直在ing头。我想我只是看不到
SELECT
o.id,
o.namesdesc,
GROUP_CONCAT(ab.pcode) as junctionpcode,
GROUP_CONCAT(br.scode) as proj_link_code,
GROUP_CONCAT(b.status)
FROM table_ab as ab
Left JOIN tablea as o on ab.oid = o.id
Left Join tableb as b on ab.pcode= b.id
LEFT Join tablebr as br on br.b_rel_code=b.id
where b.status='E'
GROUP BY o.id order by junctionpcode
非常感谢, 好吧,可能我没有很好地解释。可能是示例数据应对此有所帮助
Tablea列出了开口的描述 id,namedesc 1,测试desc1 2,测试desc2
所有项目的Tableb列表
pcode,pname,status,edate
001,test pr1,E,30-10-2017
002,test pr2,E,30-05-2017
003,test pr3,A,30-10-2018
表br是与其他项目相关的项目的关系表
brid pcode rel_pcode
1 001 003
2 003 001
表a_b是tablea和tableb之间的连接表
abid pcode id
1 001 1
2 002 2
3 003 3
所以我要实现的是获取所有与项目代码关联的空缺(来自tablea)(来自tablea_b),并仅针对状态E(来自表b)获得项目的状态和终止日期。但是它需要考虑该项目代码是否具有状态和版本的项目代码(来自表br)的链接。
我期望的输出是
a.id,concat(pcode+relcodeany),concat(pstatus,relstatus),concat(pedate,relcodeedate)
1 ,(001,003),(E,A),(30-10-2017,30-10-2018)
我希望我提供了足够的信息。 抱歉,很长的帖子
答案 0 :(得分:0)
查询出了什么问题?
您没有添加任何示例数据或预期结果,但是从查询中添加了一些注释:
on ab.pcode= b.id and b.status='E'
)请提供样本数据和预期结果。