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

Petite question de SQL

4 réponses
Avatar
Via
Bonjour à tous.

Fred Brouard m'a expliqué comment formaté mon code SQL dans un précédent
post, et je m'efforce maintenant de suivre ses lumineux conseils (merci Fred
!)
Mais là j'ai une belle requête, que j'ai essayé de formater ainsi, et ça
donne à peu près ça (je n'ai pas encore enlevé les parenthèses) :

SELECT TestsDetail.CodeEssai,
TestsDetail.RefCatTest,
TestsDetail.CodeTest,
TestsDetail.ResultatFr,
TabPFDuree.RefDurée,
TestsDetail.ResultatAm ,
TabPFDuree.DureeFr,
TabPFDuree.DureeAm,
TabPFTests.TestFr,
TabPFTests.TestAm,
Essais.RefProd
FROM Essais
INNER JOIN ((TestsDetail
INNER JOIN TabPFDuree
ON TestsDetail.RefDuree =
TabPFDuree.RefDurée)
INNER JOIN
TabPFTests
ON
TestsDetail.CodeTest = TabPFTests.CodeTest)
ON Essais.CodeEssai = TestsDetail.CodeEssai
WHERE Essais.RefProd = 'Ref' AND TestsDetail.RefCatTest = 'RefTest'
ORDER BY TestsDetail.CodeTest ASC, TabPFDuree.RefDurée ASC ;

La clause ON parachutée à la fin comme cela, ce n'est pas un peu bizarre ?
En fait il y a plusieurs jointures imbriquées, elles ne sont pas toutes à la
suite...
Est-ce correct ? Sinon, d'autres solutions ?
Merci d'avance,

Via :)

4 réponses

Avatar
JPH
Salut,
Essaie le copier/coller dans Access pour voir si elle est valide.
@+
"Via" a écrit dans le message de
news:
Bonjour à tous.

Fred Brouard m'a expliqué comment formaté mon code SQL dans un précédent
post, et je m'efforce maintenant de suivre ses lumineux conseils (merci


Fred
!)
Mais là j'ai une belle requête, que j'ai essayé de formater ainsi, et ça
donne à peu près ça (je n'ai pas encore enlevé les parenthèses) :

SELECT TestsDetail.CodeEssai,
TestsDetail.RefCatTest,
TestsDetail.CodeTest,
TestsDetail.ResultatFr,
TabPFDuree.RefDurée,
TestsDetail.ResultatAm ,
TabPFDuree.DureeFr,
TabPFDuree.DureeAm,
TabPFTests.TestFr,
TabPFTests.TestAm,
Essais.RefProd
FROM Essais
INNER JOIN ((TestsDetail
INNER JOIN TabPFDuree
ON TestsDetail.RefDuree > TabPFDuree.RefDurée)
INNER JOIN
TabPFTests
ON
TestsDetail.CodeTest = TabPFTests.CodeTest)
ON Essais.CodeEssai TestsDetail.CodeEssai
WHERE Essais.RefProd = 'Ref' AND TestsDetail.RefCatTest = 'RefTest'
ORDER BY TestsDetail.CodeTest ASC, TabPFDuree.RefDurée ASC ;

La clause ON parachutée à la fin comme cela, ce n'est pas un peu bizarre


?
En fait il y a plusieurs jointures imbriquées, elles ne sont pas toutes à


la
suite...
Est-ce correct ? Sinon, d'autres solutions ?
Merci d'avance,

Via :)




Avatar
Vuillermet Jacques
Syntaxiquement la requête est correcte.

Met chaque parenthèse fermante sous la parenthèse ouvrante correspondante.

FROM Essais
INNER JOIN
(
(TestsDetail
INNER JOIN TabPFDuree
ON TestsDetail.RefDuree = TabPFDuree.RefDurée
)
INNER JOIN TabPFTests
ON TestsDetail.CodeTest = TabPFTests.CodeTest
)
ON Essais.CodeEssai = TestsDetail.CodeEssai


Jacques.


"Via" a écrit dans le message de news:

Bonjour à tous.

Fred Brouard m'a expliqué comment formaté mon code SQL dans un précédent
post, et je m'efforce maintenant de suivre ses lumineux conseils (merci


Fred
!)
Mais là j'ai une belle requête, que j'ai essayé de formater ainsi, et ça
donne à peu près ça (je n'ai pas encore enlevé les parenthèses) :

SELECT TestsDetail.CodeEssai,
TestsDetail.RefCatTest,
TestsDetail.CodeTest,
TestsDetail.ResultatFr,
TabPFDuree.RefDurée,
TestsDetail.ResultatAm ,
TabPFDuree.DureeFr,
TabPFDuree.DureeAm,
TabPFTests.TestFr,
TabPFTests.TestAm,
Essais.RefProd
FROM Essais
INNER JOIN ((TestsDetail
INNER JOIN TabPFDuree
ON TestsDetail.RefDuree > TabPFDuree.RefDurée)
INNER JOIN
TabPFTests
ON
TestsDetail.CodeTest = TabPFTests.CodeTest)
ON Essais.CodeEssai TestsDetail.CodeEssai
WHERE Essais.RefProd = 'Ref' AND TestsDetail.RefCatTest = 'RefTest'
ORDER BY TestsDetail.CodeTest ASC, TabPFDuree.RefDurée ASC ;

La clause ON parachutée à la fin comme cela, ce n'est pas un peu bizarre


?
En fait il y a plusieurs jointures imbriquées, elles ne sont pas toutes à


la
suite...
Est-ce correct ? Sinon, d'autres solutions ?
Merci d'avance,

Via :)




Avatar
Fred BROUARD
1) les parenthèses sont inutiles et dangereuses...

2) utilise des alias ou surnom...

3) il est très dangereus d'utiliser des caractères diacritiques dans les noms des objets.
Exemple : "RefDurée"...


SELECT TD.CodeEssai,
TD.RefCatTest,
TD.CodeTest,
TD.ResultatFr,
PFD.RefDurée,
TD.ResultatAm ,
PFD.DureeFr,
PFD.DureeAm,
PFT.TestFr,
PFT.TestAm,
E.RefProd

FROM Essais E
INNER JOIN TestsDetail TD
ON Essais.CodeEssai = TD.CodeEssai
INNER JOIN TabPFDuree PFD
ON TD.RefDuree = PFD.RefDurée
INNER JOIN TabPFTests PFT
ON TD.CodeTest = PFT.CodeTest

WHERE E.RefProd = 'Ref'
AND TD.RefCatTest = 'RefTest'

ORDER BY TD.CodeTest ASC, PFD.RefDurée ASC


A +

--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Via a écrit:
Bonjour à tous.

Fred Brouard m'a expliqué comment formaté mon code SQL dans un précédent
post, et je m'efforce maintenant de suivre ses lumineux conseils (merci Fred
!)
Mais là j'ai une belle requête, que j'ai essayé de formater ainsi, et ça
donne à peu près ça (je n'ai pas encore enlevé les parenthèses) :

SELECT TestsDetail.CodeEssai,
TestsDetail.RefCatTest,
TestsDetail.CodeTest,
TestsDetail.ResultatFr,
TabPFDuree.RefDurée,
TestsDetail.ResultatAm ,
TabPFDuree.DureeFr,
TabPFDuree.DureeAm,
TabPFTests.TestFr,
TabPFTests.TestAm,
Essais.RefProd
FROM Essais
INNER JOIN ((TestsDetail
INNER JOIN TabPFDuree
ON TestsDetail.RefDuree > TabPFDuree.RefDurée)
INNER JOIN
TabPFTests
ON
TestsDetail.CodeTest = TabPFTests.CodeTest)
ON Essais.CodeEssai = TestsDetail.CodeEssai
WHERE Essais.RefProd = 'Ref' AND TestsDetail.RefCatTest = 'RefTest'
ORDER BY TestsDetail.CodeTest ASC, TabPFDuree.RefDurée ASC ;

La clause ON parachutée à la fin comme cela, ce n'est pas un peu bizarre ?
En fait il y a plusieurs jointures imbriquées, elles ne sont pas toutes à la
suite...
Est-ce correct ? Sinon, d'autres solutions ?
Merci d'avance,

Via :)




Avatar
Via
Désolé, mais cela ne fonctionne pas !

Via :)

"Fred BROUARD" a écrit dans le message de news:

1) les parenthèses sont inutiles et dangereuses...

2) utilise des alias ou surnom...

3) il est très dangereus d'utiliser des caractères diacritiques dans les


noms des objets.
Exemple : "RefDurée"...


SELECT TD.CodeEssai,
TD.RefCatTest,
TD.CodeTest,
TD.ResultatFr,
PFD.RefDurée,
TD.ResultatAm ,
PFD.DureeFr,
PFD.DureeAm,
PFT.TestFr,
PFT.TestAm,
E.RefProd

FROM Essais E
INNER JOIN TestsDetail TD
ON Essais.CodeEssai = TD.CodeEssai
INNER JOIN TabPFDuree PFD
ON TD.RefDuree = PFD.RefDurée
INNER JOIN TabPFTests PFT
ON TD.CodeTest = PFT.CodeTest

WHERE E.RefProd = 'Ref'
AND TD.RefCatTest = 'RefTest'

ORDER BY TD.CodeTest ASC, PFD.RefDurée ASC


A +

--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Via a écrit:
> Bonjour à tous.
>
> Fred Brouard m'a expliqué comment formaté mon code SQL dans un


précédent
> post, et je m'efforce maintenant de suivre ses lumineux conseils (merci


Fred
> !)
> Mais là j'ai une belle requête, que j'ai essayé de formater ainsi, et


ça
> donne à peu près ça (je n'ai pas encore enlevé les parenthèses) :
>
> SELECT TestsDetail.CodeEssai,
> TestsDetail.RefCatTest,
> TestsDetail.CodeTest,
> TestsDetail.ResultatFr,
> TabPFDuree.RefDurée,
> TestsDetail.ResultatAm ,
> TabPFDuree.DureeFr,
> TabPFDuree.DureeAm,
> TabPFTests.TestFr,
> TabPFTests.TestAm,
> Essais.RefProd
> FROM Essais
> INNER JOIN ((TestsDetail
> INNER JOIN TabPFDuree
> ON TestsDetail.RefDuree


> > TabPFDuree.RefDurée)
> INNER


JOIN
> TabPFTests
> ON
> TestsDetail.CodeTest = TabPFTests.CodeTest)
> ON Essais.CodeEssai TestsDetail.CodeEssai
> WHERE Essais.RefProd = 'Ref' AND TestsDetail.RefCatTest = 'RefTest'
> ORDER BY TestsDetail.CodeTest ASC, TabPFDuree.RefDurée ASC ;
>
> La clause ON parachutée à la fin comme cela, ce n'est pas un peu


bizarre ?
> En fait il y a plusieurs jointures imbriquées, elles ne sont pas toutes


à la
> suite...
> Est-ce correct ? Sinon, d'autres solutions ?
> Merci d'avance,
>
> Via :)
>
>