根据table1结果的条件,从单行连接2或3个表创建多个结果?

时间:2018-01-26 15:58:42

标签: mysql sql faircom-db-sql

首先让我说是的,这是一种存储数据的可怕方式,其次,这不是我的错:)我正在尝试与第三方数据库集成以提取存储在3个表中的信息,这应该是两个并存储在表2具有多对一关系的地方。由于情况并非如此,我有一个难题可以分享。

表1包含可以存储多个值的行。每行都有codeid1 - codeid20。这些列可能包含一个值,或者为0(它们永远不会是null)。它们还有相应的codetype1 - codetype20,它们将为0或1。

如果codetype1等于0,我们转到表2并从匹配的description中选择table1.codeid1=table2.id。如果codetype1等于1,我们现在必须查看table3并查找table1.codeid1=table3.id的位置,然后匹配table3.table2id=table2.id并返回说明。

这是数据结构:

table1
codeid1,codeid2,codeid3,...codeid20 ... codetype1,codetype2,codetype3,.....codetype20
18      13      1          33           0         0         1              1
13      21      45         0            0         1         0              0


table2
id,    description
13    Item 13 Description
15    Item 15 Description
17    Item 17 Description
18    Item 18 Description
21    Item 21 Description
28    Item 28 Description
45    Item 45 Description

table3
id,  table2id
1    15
33   17
21   28

我想要的结果如下:

rowid, description
1      Item 18 Description
1      Item 13 Description
1      Item 15 Description
1      Item 17 Description
2      Item 13 Description
2      Item 28 Description
2      Item 45 Description

我昨晚开始和某人一起工作,但是在没有整合table3的情况下,我错过了部分复杂的情况。就像我说的,有趣的拼图...这给了我前两张桌子之间的关系,但我不确定如何在第三张桌子上工作。

SELECT table1.rowid, table2.description
FROM table2
INNER JOIN table1 
ON table2.id=table1.codeie1
OR table2.id=table1.codeie2
...

数据库是通过ODBC连接的Faircom C-Tree DB,它通常与Mysql语句兼容,包括UNION,WITH,INTERSECT,EXISTS,JOIN ......没有PIVOT功能。

https://docs.faircom.com/doc/sqlref/sqlref.pdf

1 个答案:

答案 0 :(得分:0)

也许它适用于cp -i /home/ubuntu/.s3cfg /root/.s3cfg 而不是or

in