|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Bonjour,
J'ai deux tables Operations et Comptes. Toutes les opérations de Comptes sont faites dans la table Operations. Elles sont liées par une colonne Num_compte. Je dois chercher des comptes dans la table Operations identifiés par un commencement de chiffre ou par leur nature se trouvant dans la table compte. Ma question est de savoir si je dois utiliser un opérateur 'Like' avec un Select uniquement dans la table Operations ou si je dois faire une jointure avec les deux et d'avoir une condition additionnelle (Compte.nauture='valeur'). Sachant que tous les comptes commençant par 6 sont des comptes de nature 'charges'. Je veux ramasser tous les comptes dans la table Operations. Quelle est la requête la plus sure ? Code :
SELECT num_compte,montant FROM Operations WHERE num_compte LIKE '6%'. Code :
![]() Cordialement |
||
|
|
00
|
|
|
#2 | ||||
|
Membre confirmé
![]() |
Bonjour.
Solution 2) avec jointure : - Certainement + efficace que celle avec Like - Plus compréhensible si un jour qq'un doit reprendre cette requête (bah le like "6%" c'est pas forcément clair !) Au passage, mieux vaut écrire les jointures de manière standard : Code :
Code :
@+
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas. |
||||
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Qu'entends-tu par la plus sûre ? Si la nomenclature comptable est respectée tous les comptes de charge ont un code d'imputation qui commence par 6, effectivement. Mais j'ai vu des comptabilités où les codes des comptes étaient préfixés d'une lettre censée représenter une filiale ou un budget annexe. Maintenant est-ce que LIKE '6%' sera plus rapide qu'une jointure, tout dépend si les colonnes c.num_compte, o.num_compte et c.nature sont indexées. Pour la syntaxe de la jointure, si je suis d'accord avec GyZmoO, dans l'absolu, dans le cas précis, je crains que de déporter le filtre sur 'charges' dans la clause WHERE ne soit pas trop rentable en termes de performances. En effet, il vaut mieux ne faire la jointure que sur les lignes utiles de la table comptes.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#4 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Bonjour Gymo,
Je vois la solution. merci. mais pour la jointure j’espère que je serais certain d'avoir tous les comptes 'charges' se trouvant dans la table 'Operations'. Car ce sont ceux-là qui m’intéressent . Car il y en a quelques-uns qui se trouvent dans la table Comptes et n’étant pas dans Operations. Maljuna , En fait , j'entends par la plus sure la plus rapide et la plus fiable pour être sûr d'avoir tous les comptes 'charges' se trouvant dans Operations . Bon à vrai dire je n'ai encore indexé aucune colonne. mais je pense bien le faire après. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
GyZmoO vous a donné les bonnes clés pour votre problème.
Le fait aussi de passer par la jointure vous permettra aussi de gérer plus facilement vos évolutions fonctionnelles (imaginez qu'un compte charge commence par un autre chiffre que 6 dans le futur) En ce qui concerne la remarque de Maljuna Kris, il faudra passer par un plan d’exécution pour voir la différence (je pense qu'il sera identique, mais ça peut être enrichissant de faire le test). J'aurais plutôt tendance à différencier le côté relationnel et le métier (ne serait-ce que pour des évolutions d’écriture de votre requête, si des contraintes métiers devaient se surcharger dans le futur)... Mais là c'est à vous de choisir bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#6 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Bonjour Yanika.
Je vois bien. Merci pour les éclaircissements apportés. Je pense que la jointure est plus appropriée. Et à bientôt certainement pour d'autres types de questions sur lesquelles je serai appelé à vous interpeller. Cordialement. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com