2013-09-28 3 views
0

У меня есть три таблицы. категории, словарный запас & tex. Я пытаюсь выяснить, как иметь несколько соединений в моем запросе, я думал, что вы можете просто добавить столько же, сколько захотите, если вы ссылаетесь на них правильно.SQL Multiple Joins multiple, где

Таким образом, следующие две работы отлично там самостоятельно:

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 yep, copy-paste. –

+0

@ 491243, так это единственная ошибка, с которой я должен был иметь обе инструкции внизу? Спасибо за вашу помощь. – user2231688