2013-09-28 41 views
0

我有三个表是问题。类别,词汇& tex。我试图弄清楚如何在查询中有多个连接,我认为只要您正确引用它们,就可以添加尽可能多的连接。SQL Multiple Joins多个地方

所以,完美的自己有以下两项工作:

1.

SELECT 
categories.ID AS ID, 
categories.ParentID AS ID, 
vocabulary.value AS Name 
FROM categories 
INNER JOIN vocabulary 
ON categories.sid=vocabulary.sid 
WHERE vocabulary.langid=1 

2.

SELECT 
categories.ID AS ID, 
categories.ParentID AS ID, 
tex.value AS Description 
FROM categories 
INNER JOIN tex 
ON categories.tid=tex.tid 
WHERE tex.langid=1 

但是,如果我尝试如下把它们结合在一起,它不行。

categories.ID AS ID, 
categories.ParentID AS ID, 
vocabulary.value AS Name 
tex.value AS Description 
FROM categories 
INNER JOIN tex 
ON categories.tid=tex.tid 
WHERE tex.langid=1 

INNER JOIN vocabulary 
ON categories.sid=vocabulary.sid 
WHERE vocabulary.langid=1 

任何想法?

在此先感谢 约翰

+0

'INNER JOIN WHAT_TABLE_DO_YOU_WANT_TO_JOIN'? (可能是'tex') – wildplasser

+1

“不工作”可能意味着很多事情。你有错误?结果不是你所期望的?每种解决方案都不相同。 – BellevueBob

回答

1

MySQL,当你有相同名称的列,其中一人才会显示。您需要通过提供ALIAS来唯一标识它们。而且,您可以将条件放在ON子句或WHERE子句中,由于它使用INNER JOIN可能会产生相同的结果。

SELECT categories.ID AS CategoryID, 
     categories.ParentID AS CategoryParentID, 
     vocabulary.value AS Name 
     tex.value AS Description 
FROM categories 
     INNER JOIN tex 
      ON categories.tid = tex.tid 
     INNER JOIN vocabulary 
      ON categories.sid = vocabulary.sid 
WHERE vocabulary.langid = 1 AND 
     tex.langid = 1 
+0

什么词汇? – wildplasser

+0

@wildplasser是的,复制粘贴。 –

+0

@ 491243所以是唯一的错误,我应该有两个底部的声明?谢谢你的帮助。 – user2231688