2010-03-18 3 views
0

Qu'est-ce que je fais, j'ai besoin d'extraire des données à partir de 3 tables dans mysql, voici ma requête en cours. Toutes les tables contiennent l'IDNO qui a le numéro 03A45. Mais cette requête ne renvoie aucun résultat:Problème de lecture de 3 tables dans 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' 

Quelle serait la requête correcte pour cela?
Toutes les tables ont l'IDNO comme clé primaire.

Répondre

3

Quelque chose comme cela devrait fonctionner:

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

Comment le mettre en relation avec vb.net? J'ai utilisé ce code, basé sur votre code, mais il ne fonctionne pas, il a dit que la table mère n'est pas unique alias: Dim sqlcom Comme MySqlCommand = Nouveau MySqlCommand ("Sélectionnez * de mère, père, parents INNER JOIN mère sur father.IDNO = mother.IDNO, INNER REJOIGNE les parents sur mother.IDNO = parents.IDNO OERE père.IDNO = '"& TextBox14.Text &"' ", sqlcon) – user225269

+0

Vous incluez les tables deux fois - ne faites pas ** select * from mère, père, parents INNER JOIN ... **, juste ** sélectionnez * de mère INNER JOIN ... ** – kristian

+0

@ user225269: Vous mélangez la syntaxe de jointure ANSI-89 (dans votre question), tandis que la réponse de Kristian est ANSI-92. Vous ne pouvez pas utiliser les deux, et je recommande le format ANSI-92. –

2

Utilisation:

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

Le code suivant vous avez entré ne fonctionnent pas parce que vous avez entré une commande SQL erronée:

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) 

La bonne requête est la requête donnée par Kristian

Le principe jointure interne est de rejoindre 2 tables:

La syntaxe est:

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 

Il est juste un exemple et vous pouvez utiliser de nombreuses table autres.

Gardez un oeil sur les cours Sql. Il est très puissant quand vous comprenez comment cela fonctionne

Julien