Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

requete SQL sur 2 tables avec 2 fois le meme nom de table ?

6 réponses
Avatar
EG
Bonjour,

Debutant avec SQL, j'ai un petit soucis de requete SQL (pour utiliser dans
un programme Visual
Basic)

J'ai une table objet avec des champs nom, couleur1(couleurID), couleur2
(couleurID)

Les champs couleur1 et couleur2 proviennent d'une table couleur (couleurID,
CouleurNom).

Je cherche à faire une requete sur la table objet qui me renvoie le nom de
l'objet, la
couleur1 (le nom) et la couleur2 (le nom)

J'ai fait : "SELECT *,couleurnom as coul1, couleurnom as coul2 FROM
tbAppat,tbcouleur WHERE couleur1=couleurID ORDER BY AppatType, AppatNom"
mais ca me renvoit la meme couleur pour coul1 et coul2.

J'ai essaye:

SELECT Tbappat.*, tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
FROM (Tbappat INNER JOIN Couleur ON Tbappat.Couleur1 = tbCouleur.CouleurID)
INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 =
tbCouleur_1.CouleurID

En retour, j'ai le message Erreur de syntaxe dans l'opération Join.

J'ai essaye plein de choses avec et sans parenthese, les instructions INNER
JOIN a suivre et les ON apres ...), mais je trouve toujours pas.

Je vois pas comment faire ma requete.



Merci de votre reponse.

eric

6 réponses

Avatar
bruno reiter [MVP]
d'abord éviter les requêtes en direct dans l'applicatif, utilises plutôt une
vue, procédure ou fonction utilisateur.
ensuite éviter l'utilisation de * dans le select,
enfin les parenthèses sont pour les sous-requêtes, donc :
SELECT Tbappat.col1, ..., tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
FROM Tbappat
INNER JOIN Couleur
ON Tbappat.Couleur1 = tbCouleur.CouleurID
INNER JOIN tbCouleur AS tbCouleur_1
ON Tbappat.Couleur2 = tbCouleur_1.CouleurID

br


"EG" wrote in message
news:bmc5k0$qo6$
Bonjour,

Debutant avec SQL, j'ai un petit soucis de requete SQL (pour utiliser dans
un programme Visual
Basic)

J'ai une table objet avec des champs nom, couleur1(couleurID), couleur2
(couleurID)

Les champs couleur1 et couleur2 proviennent d'une table couleur (couleurID,
CouleurNom).

Je cherche à faire une requete sur la table objet qui me renvoie le nom de
l'objet, la
couleur1 (le nom) et la couleur2 (le nom)

J'ai fait : "SELECT *,couleurnom as coul1, couleurnom as coul2 FROM
tbAppat,tbcouleur WHERE couleur1=couleurID ORDER BY AppatType, AppatNom"
mais ca me renvoit la meme couleur pour coul1 et coul2.

J'ai essaye:

SELECT Tbappat.*, tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
FROM (Tbappat INNER JOIN Couleur ON Tbappat.Couleur1 = tbCouleur.CouleurID)
INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 > tbCouleur_1.CouleurID

En retour, j'ai le message Erreur de syntaxe dans l'opération Join.

J'ai essaye plein de choses avec et sans parenthese, les instructions INNER
JOIN a suivre et les ON apres ...), mais je trouve toujours pas.

Je vois pas comment faire ma requete.



Merci de votre reponse.

eric



Avatar
EG
Bonsoir,

Merci de votre reponse.

J'ai essaye:

SELECT tbappat.*, tbCouleur.CouleurNom , tbCouleur_1.CouleurNom
FROM Tbappat
INNER JOIN tbCouleur ON tbappat.Couleur1 = tbCouleur.CouleurID
INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 tbCouleur_1.CouleurID

J'ai l'erreur :
Erreur de syntaxe(opérateur absent) dans l'expression Tbappat
tbappat.Couleur1 = tbCouleur.CouleurID
INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 tbCouleur_1.CouleurID


Je vois toujours pas comment ecrire cette requete.
Je vais finir par devoir faire 2 tables couleurs identiques.

Merci quand meme.


Eric



"bruno reiter [MVP]" a écrit dans le message
de news:
d'abord éviter les requêtes en direct dans l'applicatif, utilises plutôt


une
vue, procédure ou fonction utilisateur.
ensuite éviter l'utilisation de * dans le select,
enfin les parenthèses sont pour les sous-requêtes, donc :
SELECT Tbappat.col1, ..., tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
FROM Tbappat
INNER JOIN Couleur
ON Tbappat.Couleur1 = tbCouleur.CouleurID
INNER JOIN tbCouleur AS tbCouleur_1
ON Tbappat.Couleur2 = tbCouleur_1.CouleurID

br


"EG" wrote in message
news:bmc5k0$qo6$
> Bonjour,
>
> Debutant avec SQL, j'ai un petit soucis de requete SQL (pour utiliser


dans
> un programme Visual
> Basic)
>
> J'ai une table objet avec des champs nom, couleur1(couleurID), couleur2
> (couleurID)
>
> Les champs couleur1 et couleur2 proviennent d'une table couleur


(couleurID,
> CouleurNom).
>
> Je cherche à faire une requete sur la table objet qui me renvoie le nom


de
> l'objet, la
> couleur1 (le nom) et la couleur2 (le nom)
>
> J'ai fait : "SELECT *,couleurnom as coul1, couleurnom as coul2 FROM
> tbAppat,tbcouleur WHERE couleur1=couleurID ORDER BY AppatType,


AppatNom"
> mais ca me renvoit la meme couleur pour coul1 et coul2.
>
> J'ai essaye:
>
> SELECT Tbappat.*, tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
> FROM (Tbappat INNER JOIN Couleur ON Tbappat.Couleur1 tbCouleur.CouleurID)
> INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 > > tbCouleur_1.CouleurID
>
> En retour, j'ai le message Erreur de syntaxe dans l'opération Join.
>
> J'ai essaye plein de choses avec et sans parenthese, les instructions


INNER
> JOIN a suivre et les ON apres ...), mais je trouve toujours pas.
>
> Je vois pas comment faire ma requete.
>
>
>
> Merci de votre reponse.
>
> eric
>




Avatar
bruno reiter [MVP]
ça ressemble plus à une erreur de frappe, je ne vois pas d'erreur, essaies de
repasser ça :

SELECT T1.*, T2.CouleurNom , T3.CouleurNom
FROM Tbappat T1
INNER JOIN tbCouleur T2 ON T1.Couleur1 = T2.CouleurID
INNER JOIN tbCouleur T3 ON T1.Couleur2 = T3.CouleurID


br

"EG" wrote in message
news:bmhkne$nk$
Bonsoir,

Merci de votre reponse.

J'ai essaye:

SELECT tbappat.*, tbCouleur.CouleurNom , tbCouleur_1.CouleurNom
FROM Tbappat
INNER JOIN tbCouleur ON tbappat.Couleur1 = tbCouleur.CouleurID
INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 > tbCouleur_1.CouleurID

J'ai l'erreur :
Erreur de syntaxe(opérateur absent) dans l'expression Tbappat
tbappat.Couleur1 = tbCouleur.CouleurID
INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 > tbCouleur_1.CouleurID


Je vois toujours pas comment ecrire cette requete.
Je vais finir par devoir faire 2 tables couleurs identiques.

Merci quand meme.


Eric



"bruno reiter [MVP]" a écrit dans le message
de news:
> d'abord éviter les requêtes en direct dans l'applicatif, utilises plutôt
une
> vue, procédure ou fonction utilisateur.
> ensuite éviter l'utilisation de * dans le select,
> enfin les parenthèses sont pour les sous-requêtes, donc :
> SELECT Tbappat.col1, ..., tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
> FROM Tbappat
> INNER JOIN Couleur
> ON Tbappat.Couleur1 = tbCouleur.CouleurID
> INNER JOIN tbCouleur AS tbCouleur_1
> ON Tbappat.Couleur2 = tbCouleur_1.CouleurID
>
> br
>
>
> "EG" wrote in message
> news:bmc5k0$qo6$
> > Bonjour,
> >
> > Debutant avec SQL, j'ai un petit soucis de requete SQL (pour utiliser
dans
> > un programme Visual
> > Basic)
> >
> > J'ai une table objet avec des champs nom, couleur1(couleurID), couleur2
> > (couleurID)
> >
> > Les champs couleur1 et couleur2 proviennent d'une table couleur
(couleurID,
> > CouleurNom).
> >
> > Je cherche à faire une requete sur la table objet qui me renvoie le nom
de
> > l'objet, la
> > couleur1 (le nom) et la couleur2 (le nom)
> >
> > J'ai fait : "SELECT *,couleurnom as coul1, couleurnom as coul2 FROM
> > tbAppat,tbcouleur WHERE couleur1=couleurID ORDER BY AppatType,
AppatNom"
> > mais ca me renvoit la meme couleur pour coul1 et coul2.
> >
> > J'ai essaye:
> >
> > SELECT Tbappat.*, tbCouleur.CouleurNom, tbCouleur_1.CouleurNom
> > FROM (Tbappat INNER JOIN Couleur ON Tbappat.Couleur1 > tbCouleur.CouleurID)
> > INNER JOIN tbCouleur AS tbCouleur_1 ON Tbappat.Couleur2 > > > tbCouleur_1.CouleurID
> >
> > En retour, j'ai le message Erreur de syntaxe dans l'opération Join.
> >
> > J'ai essaye plein de choses avec et sans parenthese, les instructions
INNER
> > JOIN a suivre et les ON apres ...), mais je trouve toujours pas.
> >
> > Je vois pas comment faire ma requete.
> >
> >
> >
> > Merci de votre reponse.
> >
> > eric
> >
>
>



Avatar
EG
Re Bonsoir,

ca ne passe pas non plus.

Si je supprime T2.CouleurNom et INNER JOIN tbCouleur T2...., ça passe
Idem avec T3,

mais des qu'il y a les 2 ensembles ça ne passe pas (que ce soit sous visual
basic ou sous access), erreur de syntaxe, operateur absent dans
l'expression "T1.Couleur1=T2.CouleurID ...

Merci.

Eric


"bruno reiter [MVP]" a écrit dans le message
de news:
ça ressemble plus à une erreur de frappe, je ne vois pas d'erreur, essaies


de
repasser ça :

SELECT T1.*, T2.CouleurNom , T3.CouleurNom
FROM Tbappat T1
INNER JOIN tbCouleur T2 ON T1.Couleur1 = T2.CouleurID
INNER JOIN tbCouleur T3 ON T1.Couleur2 = T3.CouleurID


br



Avatar
bruno reiter [MVP]
et ça ?

SELECT [T1].*, [T2].[CouleurNom] , [T3].[CouleurNom]
FROM Tbappat T1
JOIN tbCouleur T2 ON [T1].[Couleur1] = [T2].[CouleurID]
JOIN tbCouleur T3 ON [T1].[Couleur2] = [T3].[CouleurID]
si ça ne passe pas, passes la structure de tes tables

br


"EG" wrote in message
news:bmhoh8$mii$
Re Bonsoir,

ca ne passe pas non plus.

Si je supprime T2.CouleurNom et INNER JOIN tbCouleur T2...., ça passe
Idem avec T3,

mais des qu'il y a les 2 ensembles ça ne passe pas (que ce soit sous visual
basic ou sous access), erreur de syntaxe, operateur absent dans
l'expression "T1.Couleur1=T2.CouleurID ...

Merci.

Eric


"bruno reiter [MVP]" a écrit dans le message
de news:
> ça ressemble plus à une erreur de frappe, je ne vois pas d'erreur, essaies
de
> repasser ça :
>
> SELECT T1.*, T2.CouleurNom , T3.CouleurNom
> FROM Tbappat T1
> INNER JOIN tbCouleur T2 ON T1.Couleur1 = T2.CouleurID
> INNER JOIN tbCouleur T3 ON T1.Couleur2 = T3.CouleurID
>
>
> br
>



Avatar
bruno reiter [MVP]
Il semble donc que tu travailles avec un ACCESS97 ou antérieur, il vaut mieux
que tu fasses tes requête en mode graphique et que tu poses les questions sur le
NG access où les personnes connaissent mieux les spécifités d'ACCESS
(je n'ai pas ACCESS97 et n'ai pas pu ouvrir ta base)

bon courage

br


"EG" wrote in message
news:bmhoh8$mii$
Re Bonsoir,

ca ne passe pas non plus.

Si je supprime T2.CouleurNom et INNER JOIN tbCouleur T2...., ça passe
Idem avec T3,

mais des qu'il y a les 2 ensembles ça ne passe pas (que ce soit sous visual
basic ou sous access), erreur de syntaxe, operateur absent dans
l'expression "T1.Couleur1=T2.CouleurID ...

Merci.

Eric


"bruno reiter [MVP]" a écrit dans le message
de news:
> ça ressemble plus à une erreur de frappe, je ne vois pas d'erreur, essaies
de
> repasser ça :
>
> SELECT T1.*, T2.CouleurNom , T3.CouleurNom
> FROM Tbappat T1
> INNER JOIN tbCouleur T2 ON T1.Couleur1 = T2.CouleurID
> INNER JOIN tbCouleur T3 ON T1.Couleur2 = T3.CouleurID
>
>
> br
>