J'ai beaucoup de mal avec la syntaxe SQL et HF7 avec les jointures
J'ai une Table CLIENTS et CAT ( code libelle ) Un clients peut avoir
une catégorie ( bon , pas bon etc )
Liste des clients avec la catégorie : Pas de problèmes:
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2,
clients.date_fin_rth, cat.libelle
FROM clients LEFT JOIN cat ON cat.code=clients.cat
Par contre j'ai une seconde table liée à Client : CAT2( code, libelle ) du
même type
Et la je coince , impossible de faire ma reqêtte ( avec double jointure)
( je sais faire avec des clauses Where et And mais )
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2,
clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2
LEFT JOIN cat ON cat.code=clients.cat
Cette syntaxe ne fonctionne pas, j'ai essayé de plusieurs eplacement de
parenthèses mais
je n'y arive pas.
Qui peut me donner un coup de main pour ma syntaxe de jointures ?
******
Sinon avec clause Where cela fonctionne
SELECT Clients.Nom AS Nom,
Clients.prenom AS prenom,
cat.libelle AS libelle1,
cat2.libelle AS libelle2,
Clients.ville AS ville
FROM cat, cat2, Clients
WHERE Clients.cat = cat.code
AND Clients.cat2= cat2.code
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
mat
sebNews wrote:
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2 LEFT JOIN cat ON cat.code=clients.cat
Cette syntaxe ne fonctionne pas, j'ai essayé de plusieurs eplacement de parenthèses mais je n'y arive pas.
Qui peut me donner un coup de main pour ma syntaxe de jointures ?
****** Sinon avec clause Where cela fonctionne
SELECT Clients.Nom AS Nom, Clients.prenom AS prenom, cat.libelle AS libelle1, cat2.libelle AS libelle2, Clients.ville AS ville FROM cat, cat2, Clients WHERE Clients.cat = cat.code AND Clients.cat2 > cat2.code
Il y a plusieurs possibilités (voir l'aide pour la syntaxe).
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, clients LEFT JOIN cat ON cat.code=clients.cat
ou bien
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, cat RIGHT JOIN clients ON cat.code=clients.cat
devraient marcher.
sebNews wrote:
SELECT clients.code_cli, clients.Nom, clients.adresse1,
clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2 LEFT JOIN
cat ON cat.code=clients.cat
Cette syntaxe ne fonctionne pas, j'ai essayé de plusieurs eplacement
de parenthèses mais je n'y arive pas.
Qui peut me donner un coup de main pour ma syntaxe de jointures ?
****** Sinon avec clause Where cela fonctionne
SELECT Clients.Nom AS Nom, Clients.prenom AS prenom, cat.libelle AS
libelle1, cat2.libelle AS libelle2, Clients.ville AS ville FROM cat,
cat2, Clients WHERE Clients.cat = cat.code AND Clients.cat2 > cat2.code
Il y a plusieurs possibilités (voir l'aide pour la syntaxe).
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2,
clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2,
clients LEFT JOIN cat ON cat.code=clients.cat
ou bien
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2,
clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2,
cat RIGHT JOIN clients ON cat.code=clients.cat
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2 LEFT JOIN cat ON cat.code=clients.cat
Cette syntaxe ne fonctionne pas, j'ai essayé de plusieurs eplacement de parenthèses mais je n'y arive pas.
Qui peut me donner un coup de main pour ma syntaxe de jointures ?
****** Sinon avec clause Where cela fonctionne
SELECT Clients.Nom AS Nom, Clients.prenom AS prenom, cat.libelle AS libelle1, cat2.libelle AS libelle2, Clients.ville AS ville FROM cat, cat2, Clients WHERE Clients.cat = cat.code AND Clients.cat2 > cat2.code
Il y a plusieurs possibilités (voir l'aide pour la syntaxe).
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, clients LEFT JOIN cat ON cat.code=clients.cat
ou bien
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, cat RIGHT JOIN clients ON cat.code=clients.cat
devraient marcher.
mat
mat wrote:
Il y a plusieurs possibilités (voir l'aide pour la syntaxe).
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, clients LEFT JOIN cat ON cat.code=clients.cat
ou bien
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, cat RIGHT JOIN clients ON cat.code=clients.cat
ouuuf... faut plutôt oublier ce conseil :-)
Je n'ai pas fait assez attention: LEFT et RIGHT ne sont utilisés que dans des OUTER JOINS. Pour un left join utiliser INNER JOIN.
Conclusion:
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients INNER JOIN cat2 ON cat2.code=clients.cat2, clients INNER JOIN cat ON cat.code=clients.cat
mat wrote:
Il y a plusieurs possibilités (voir l'aide pour la syntaxe).
SELECT clients.code_cli, clients.Nom, clients.adresse1,
clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, clients LEFT
JOIN cat ON cat.code=clients.cat
ou bien
SELECT clients.code_cli, clients.Nom, clients.adresse1,
clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, cat RIGHT
JOIN clients ON cat.code=clients.cat
ouuuf... faut plutôt oublier ce conseil :-)
Je n'ai pas fait assez attention:
LEFT et RIGHT ne sont utilisés que dans des OUTER JOINS.
Pour un left join utiliser INNER JOIN.
Conclusion:
SELECT clients.code_cli, clients.Nom, clients.adresse1,
clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle
FROM clients INNER JOIN cat2 ON cat2.code=clients.cat2,
clients INNER JOIN cat ON cat.code=clients.cat
Il y a plusieurs possibilités (voir l'aide pour la syntaxe).
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, clients LEFT JOIN cat ON cat.code=clients.cat
ou bien
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients LEFT JOIN cat2 ON cat2.code=clients.cat2, cat RIGHT JOIN clients ON cat.code=clients.cat
ouuuf... faut plutôt oublier ce conseil :-)
Je n'ai pas fait assez attention: LEFT et RIGHT ne sont utilisés que dans des OUTER JOINS. Pour un left join utiliser INNER JOIN.
Conclusion:
SELECT clients.code_cli, clients.Nom, clients.adresse1, clients.adresse2, clients.date_fin_rth, cat.libelle, cat2.libelle FROM clients INNER JOIN cat2 ON cat2.code=clients.cat2, clients INNER JOIN cat ON cat.code=clients.cat