2016-11-26 107 views
0

这是我第一次来这里,我的第一个问题很抱歉,如果我问一些愚蠢的东西。 那么我的问题是MySQL。 让我解释一下INNER JOIN 4 tables

我有4度表(T1,T2,T3,T4)

T1(t1_id,EXTERNAL_ID)在这里,我保持的ID从T2,T3,T4,然后我有 T2(t2_id ,名称等...) T3(t3_id,名称等) T4(t4_id,name等...)

T1已经从这些表中输入了一些条目。 T2,T3,T4没有什么共同点,但T1已经让它保留了自己的ID。

所以查询

**SELECT T1.*, T2.*, T3.*, T4.* 
FROM T1 
INNER JOIN T2 ON T2.t2_id=T1.external_id 
INNER JOIN T3 ON T3.t2_id=T1.external_id 
INNER JOIN T4 ON T4.t2_id=T1.external_id** 

,并没有表现出nothing.I试图与LEFT JOIN,但没有....但如果我这样做

**SELECT T1.*, T2.* 
FROM T1 
INNER JOIN T2 ON T2.t2_id=T1.external_id** 

它的作品和表演数据。

我希望你能理解我的问题。 谢谢!

+0

你说你试过这个,没有行,它是正确的吗? SELECT T1 *,T2 *,T3 *,T4 * FROM T1 LEFT JOIN T2 ON T2.t2_id = T1.external_id LEFT JOIN T3 ON T3.t2_id = T1.external_id LEFT JOIN T4 T4 ON .t2_id = T1.external_id –

回答

0

试试这个:

SELECT T1.*, T2.*, T3.*, T4.* 
FROM T1 
INNER JOIN T2 ON T2.t2_id=T1.external_id 
INNER JOIN T3 ON T3.t3_id=T1.external_id 
INNER JOIN T4 ON T4.t4_id=T1.external_id 

请注意,我已经改变了ID为T3 T4 &,我认为t2_id不存在他们?

+0

或者,你可以使用LEFT OUTER JOIN替换INNER JOIN,它应该从T2,T3和T4中检索与T1具有关系的所有行。 – madeniran1000

0

您应该有三列来保存T1上的每个表ID。

T1(T1_id,T2_id,T3_id,T4_id)

所以,当你做的内连接会是这样:

SELECT * FROM T1 
INNER JOIN T2 ON T2.t2_id = T1.t2_id 
INNER JOIN T3 ON T2.t3_id = T1.t3_id 
INNER JOIN T4 ON T2.t4_id = T1.t4_id 
0

谢谢大家对你的答案我使用LEFT加入,现在它正在工作。但问题是这是我的数据库上的大写字母,并且INNER & LEFT无法正常工作。

内部不正确的使用原因并不总是从t2,t3,t4条目。

再次感谢您的时间和您的支持!