Mysql 从多个表中提取数据的sql查询
我有几个表,比如4个表,A、B、C和D,它们由一些常用值链接,如:Mysql 从多个表中提取数据的sql查询,mysql,sql,Mysql,Sql,我有几个表,比如4个表,A、B、C和D,它们由一些常用值链接,如: TableA(A1,A2,A3,A4) ---> TableB(A1,B2,B3,B4) ---> TableC(C1,C2,B3,C4) ---> TableD(D1,D2,D3,C4) | | TableX(X1,B2,X3,X4)
TableA(A1,A2,A3,A4) ---> TableB(A1,B2,B3,B4) ---> TableC(C1,C2,B3,C4) ---> TableD(D1,D2,D3,C4)
| |
TableX(X1,B2,X3,X4) TableY(Y1,Y2,Y3,C4)
对于A2的每个唯一值,都有一个值A1。表B中有相同的值A1。
类似地,在表B中,对于A1的每个值,有一些特定值B2、B3、B4,
同样,在表C和表D中,对于B3和C4的每个值,分别存在特定的剩余值
除了线性流之外,在表B到表X或表C到表Y之间还有多个流
我想提取一些列,比如A1、A2、B2、C1、D1和C4,如果给定A2的值
我不熟悉这种类型的查询,没有时间完成任务
提前感谢您的帮助。您必须使用以下多重连接:
Select TableA.A1,TableA.A2,TableB.B2,TableC.C1,TableC.C4 from
TableA join TableB on TableA.A1=TableB.A1
join TableC on TableB.B3=TableC.B3
where A2='....'
虽然这是一个糟糕的问题,但表和解释的示例很差,首先要查询如何将所有字段绑定在一起。一旦建立了所有连接条件,然后添加从数据中查找特定元素的位置
select *
from
TableA a
JOIN TableB b
on a.A1 = b.A1
JOIN TableC c
on b.b3 = c.b3
JOIN TableD d
on c.c4 = d.c4
where
a.field = '?'
AND d.field = '?'
或者你想要的任何标准。。。只需使用别名引用,如a、b、c、d
请注意,从我的SQL布局中,您可以通过简单的视觉缩进和各个表之间非常清晰的列关系,准确地看到一个表如何连接到另一个表的层次结构。我想简单的连接可以解决这个问题。感谢您提出这样一个可怕的问题,但是第一次工作,需要今天完成这个项目,我别无选择。我得到了流量,但如果流量不是线性的呢。如表A到表B到表C到表D一样,存在于初始问题中,但如果我有一个子流,则表示从表B到表X,可能是另一个子流,如表C到表Y。我该如何适应这种情况?谢谢您的帮助。@Jivi,您必须在公共元素表之间建立某种连接。这就是关系数据库的全部要点。只需将join添加到相应的其他表中。如果tableC可以连接到D、X和Z,只需将每个表分别连接到C表即可。如果没有保证的记录,比如。。tableX,然后将其作为左连接来执行,这意味着我需要来自左表ex:TableC的记录,即使右侧表tableX中没有记录。如果您有更多这些子流程,请更新您的问题,我将修改我的答案。