Bonjour,
je suis débutant en SQL (je travaille avec Dreamweaver, MAMP, InnoDB), et un peu gêné de venir poser ma question basique sur un forum de pros , mais je ne vois pas comment me sortir du problème dans lequel je me suis fourré.
Voilà de quoi il s'agit:
Sur plusieurs pages différentes, je veux afficher une liste de clients d'une région précise (ZIPs 1003, 1005, 1006, 1004, 1007, 1008, 1020, 1024, 1025, 1030, 1009, 1011, 1012, 1052, 1066, 1094, 1095, 1170, 1279, 1296, 1196, 1175, 1110, 1260, 1180, 1162, 1071, 1815, 1096, 1814, 1820, 1800, 1844, 1422, 1347, 1350, 1337, 1400, 1510, 1530, 1040, 1315, 1083, 1610, 1305, 1073, 1860, 1865, 1854), triés en fonction de formations postgrade et classés par zip ascendant et par ordre alphabétique.
Chaque liste est différente sur chaque page.
Voilà la requête type (qui fonctionnait jusqu'à maintenant) :
Tant que je n'ai eu que les zip ci-dessus dans ma table clients, tout s'est bien passé. Mais depuis que j'en ai introduit d'autres (1201, 1205, 1206, 1207 etc.), ça déraille - selon les pages, le tri en fonction des zip est correct, et dans d'autres le tri ne se fait pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM clients WHERE clients.zip IN (1003, 1005, 1006, 1004, 1007, 1008, 1020, 1024, 1025, 1030, 1009, 1011, 1012, 1052, 1066, 1094, 1095, 1170, 1279, 1296, 1196, 1175, 1110, 1260, 1180, 1162, 1071, 1815, 1096, 1814, 1820, 1800, 1844, 1422, 1347, 1350, 1337, 1400, 1510, 1530, 1040, 1315, 1083, 1610, 1305, 1073, 1860, 1865, 1854) AND clients.num_postgr1 = 1 OR clients.num_postgr2 = 1 ORDER BY clients.zip, clients.alpha
Exemples de ce qui se passe:
Cette requête SQL donne le résultat voulu :
Affichage des 20 clients qui correspondent, les 9 autres (zip 1201, 1205, 1206 et.) n'apparaissent pas dans le résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM clients WHERE clients.zip IN (1003, 1005, 1006, 1004, 1007, 1008, 1020, 1024, 1025, 1030, 1009, 1011, 1012, 1052, 1066, 1094, 1095, 1170, 1279, 1296, 1196, 1175, 1110, 1260, 1180, 1162, 1071, 1815, 1096, 1814, 1820, 1800, 1844, 1422, 1347, 1350, 1337, 1400, 1510, 1530, 1040, 1315, 1083, 1610, 1305, 1073, 1860, 1865, 1854) AND clients.num_postgr1 = 1 OR clients.num_postgr2 = 1 ORDER BY clients.zip, clients.alpha
Par contre, cette requête (identique) ne fonctionne pas bien :
Affichage des 2 clients qui correspondent, plus un autre (zip 1206) qui n'a rien à faire là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM clients WHERE clients.zip IN (1003, 1005, 1006, 1004, 1007, 1008, 1020, 1024, 1025, 1030, 1009, 1011, 1012, 1052, 1066, 1094, 1095, 1170, 1279, 1296, 1196, 1175, 1110, 1260, 1180, 1162, 1071, 1815, 1096, 1814, 1820, 1800, 1844, 1422, 1347, 1350, 1337, 1400, 1510, 1530, 1040, 1315, 1083, 1610, 1305, 1073, 1860, 1865, 1854) AND clients.num_postgr1 = 3 OR clients.num_postgr2 = 3 ORDER BY clients.zip, clients.alpha
J'ai essayé différents bidouillages, p. ex entrer exclusivement les zip concernés - rien n'y fait. Ou introduire un critère de tri supplémentaire par canton, nada...
Je baise (virtuellement) les pieds de celui qui m'aidera à me sortir de cette panade!
Dominique
Partager