编辑:问题是数据不匹配表a\U b和b\U c中的b-ID没有重叠
我有以下表格:
a(id,…)
a\u b(a\u id,b\u id)
b\u c(b\u id,c\u id)
c\ d(c\ id,d\ id)
d(id,值,…)
在这里,我希望根据d中的行的值从a中得到一些行。表a\u b、b\u c和c\u d只是从一个表到另一个表的idMap。
我试着找到这样的东西:
select * from A where D.value = "true"
我走了这么远:
select * from A
inner join A_B on A_B.a_id = A.id
inner join B_C on B_C.b_id = A_B.b_id
只是一张空table。
我开始认为我处理这个问题的方式是错误的,或者可能误解了应该如何加入表格。
1条答案
按热度按时间des4xlb01#
如果你的数据是一致的,你所得到的就可以了。下面是数据库和查询的一个版本,它演示了这一点。为了简单起见,我推断了表的存在
b
以及c
,并在X_Y
将表样式设置为单字表的外键。对于给定的数据,产生:
因此,如果数据是正确的,那么您正在构建的查询可以产生一个答案。但是,如果在不完整的查询中得到一个空表,那么表中就有数据问题,或者(很可能)大纲模式误导了我们。
在运行macos high sierra 10.13.4的mac上执行的测试,使用informix 12.10.fc6,但使用informix和mysql共同的sql子集。