|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre expérimenté
![]() Rémi GouyonDéveloppeur informatique Inscription : novembre 2003 Messages : 539 ![]() |
Salut à tous
Voilà j'ai une table (t_combat) qui contient les champs suivants:
J'exécute une requête qui me donne la liste des navires qui se défendent. Et pour chacun de ses navires j'établis la liste des navires qui l'attaquent avec la requête suivante: Code :
Par exemple ma table contient: +-------+--------+ ! RefAtt ! RefDef ! +-------+--------+ ! 1 ! 8 ! +-------+--------+ ! 3 ! 8 ! +-------+--------+ ! 4 ! 8 ! +-------+--------+ ! 8 ! 3 ! +-------+--------+ ! 1 ! 7 ! +-------+--------+ Le résultat de ma requête pour RefDef=8 est RefAtt: 1 3 4 Pour avoir la liste des navires attaqué par le défenseur qui sont dans la liste de ceux qui l'attaquent (j'espère avoir été clair) Je pourrais faire une requête de ce genre Code :
|
||||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Inscription : août 2009 Messages : 66 ![]() |
Je ne sais pas si j'ai bien compris ton problème...
Au final, c'est la liste des navires qui sont à la fois attaquants et défenseurs envers un navire donné que tu cherches à connaître ? Si c'est le cas, je tenterais sans optimiser : Code :
|
||
|
|
00
|
|
|
#3 | ||
![]() ![]() |
Ça doit pouvoir se faire aussi avec une auto-jointure :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Rémi GouyonDéveloppeur informatique Inscription : novembre 2003 Messages : 539 ![]() |
Merci pour vos réponses. Je viens de tester les deux requêtes et elles fonctionnent toutes les deux.
Maintenant il ne me reste plus qu'à choisir cruel dilemme |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : août 2009 Messages : 66 ![]() |
A mon avis, tu peux prendre la requête de Cinéphil. D'expérience, le WHERE...IN est plus lent qu'une jointure.
On peut étayer ceci en créant un grand jeu de données par une procédure stockée et de faire des tests de performances. |
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Rémi GouyonDéveloppeur informatique Inscription : novembre 2003 Messages : 539 ![]() |
C'est ce que j'ai fait. Je confirme c'est effectivement plus rapide.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com