2010-03-18 3 views
0

Что мне делать, мне нужно получить данные из 3 таблиц в mysql, вот мой текущий запрос. Все таблицы содержат IDNO с номером 03A45. Но этот запрос не возвращает никаких результатов:Неполадка чтения из 3 таблиц в mysql

SELECT * 
    FROM father, mother, parents 
WHERE father.IDNO=mother.IDNO=parents.IDNO 
    AND mother.IDNO='03A45' 
    AND father.IDNO='03A45' 
    AND parents.IDNO='03A45' 

Каков будет правильный запрос?
Все таблицы имеют IDNO в качестве первичного ключа.

ответ

3

Что-то, как это должно работать:

select * 
from 
father 
inner join mother on father.IDNO = mother.IDNO 
inner join parents on mother.IDNO = parents.IDNO 
where 
father.IDNO = '03a45' 
+0

Как связать его с vb.net? Я использовал этот код на основе вашего кода, но он не работает, он сказал, что материнская таблица не является уникальным псевдонимом: Dim sqlcom As MySqlCommand = New MySqlCommand («Выберите * от матери, отца, родителей INNER JOIN mother on father.IDNO = mother.IDNO, INNER JOIN родители на mother.IDNO = родители.IDNO WHERE father.IDNO = '' & TextBox14.Text & "'", sqlcon) – user225269

+0

Вы включаете таблицы дважды - не делайте ** выберите * из мать, отец, родители INNER JOIN ... **, просто ** выберите * от матери INNER JOIN ... ** – kristian

+0

@ user225269: Вы смешиваете синтаксис объединения ANSI-89 (в своем вопросе), в то время как ответ Кристиана ANSI-92. Вы не можете использовать оба варианта, и я рекомендую формат ANSI-92. –

2

Использование:

SELECT p.*, 
     f.*, 
     m.* 
    FROM PARENTS p 
    JOIN FATHER f ON f.idno = p.idno 
    JOIN MOTHER m ON m.idno = p.idno 
WHERE p.idno = '03A45' 
0

Следующий код вы ввели не работают, потому что вы ввели неправильную команду SQL:

Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father, parents INNER JOIN mother on father.IDNO = mother.IDNO, INNER JOIN parents on mother.IDNO = parents.IDNO WHERE father.IDNO='" & TextBox14.Text & "'", sqlcon) 

Хороший запрос - запрос Kristian

Принцип на внутреннее соединение является соединить 2 таблицы:

синтаксис:

Select a.myFields, b.myFields 
FROM myFirstTable as a INNER JOIN mySecondTable ON a.PrimaryKey = b.ForeignKey 
INNER JOIN myThirdTable as c ON a.PrimaryKey = c.ForeighKey 'For 3Tables 

Это просто пример, и вы можете использовать многие другие таблицы.

Следите за курсами Sql. Это очень важно, когда вы понимаете, как он работает

Julien

Смежные вопросы