[VB6]requete plusieurs champs, plusieurs tables

Bonjour,

J’ai deux tables T1 et T2
Dans la table T1, j’ai les champs T11, T12
Dans la table T2, j’ai les champs T21, T22

J’aimerai savoir comment faire une requete pour prendre le champs T11, T12, T21, T22 ?

Je crois qu’il faut utilisé LEFT JOIN mais j’arrive pas à comprendre comment l’utilisé

Merci pour votre aide

PS: je travaille avec visual basic 6 et ma table est fait avec ACCESS

up

Bonjour,
perso j’utilise pas trop le left join j’utilise la méthode de la jointure dans le WHERE:


SELECT *
FROM T1, T2

te ramènes tout sans aucun critère de selection.
En admettant que ton champs t11 de la table T1 correspond au champ t21 de la table T2 (clé étrangère par exemple), ça te donne:


SELECT *
FROM T1, T2
WHERE T1.t11 = T2.t21 
AND autre critère si besoin

Voilà j’éspère t’avoir aidé :bounce:

  1. des efforts sur l’orthographe
  2. si c’est du Access, ou du SQL, on ne met pas VB6 :slight_smile: j’y pige que dalle à ce langage, alors que SQL si.
  3. Voilà LEFT JOIN
SQL
[color=blue;font-weight:bold]SELECT[/color] * FROM T1 LEFT JOIN T2 ON T1.t11 = T2.t21

Cela fait une jointure en acceptant les données de la table de gauche qui n’ont pas de correspondance avec la table de droite.

MERCI BCP A VOUS DEUX, ca marche avec vos deux codes.

Maintenant, j’ai encore un dernier problème, je pensai pouvoir me débrouillé aussi avec trois table mais non.

par exemple avec le code de zigh, j’ai essaye avec la table T3 où les champs sont T31, T32

SELECT *
FROM T1, T2, T3
WHERE T1.t11 = T2.t21 = T3.t31

Ca ne marche pas, pourtant les élément de T11, T21, et T31 sont les même.

Evidemment, j’ai aussi essayé avec and
SELECT *
FROM T1, T2, T3
WHERE T1.t11 = T2.t21
and T2.t21 = T3.t31

mais ca marche pas, j’obtiens l’erreur

The specified field <field> could refer to more than one table listed in the FROM clause of your SQL statement. (Error 3079)

Grosso modo il te sort que tu utilises deux fois le même nom de champ et qu’il y a ambiguité. Je connais pas du tout Access, mais en listant les champs plutôt qu’utiliser *, ça pourrait passer.

ah non, en faite ca marche, j’ai simplement oublié de déclarer la troisième table.