|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 266 ![]() |
Bonjour,
Je possède une table clients et une table commande. Ayant un lien 1 --> n (un client plusieurs commandes) Actuellement lors ce que je supprime une commande le client associé n'est pas supprimé (virtuellement flag à 'S'). Je souhaiterais donc mettre a jour tous les clients qui sont actuellement liés a une commande supprimées ('S'). J'utilise donc une table intermédiaire. mais l'update ne fonctionne pas. Aucune ligne n'est traitée.. Code :
|
||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 531 ![]() |
Saluton,
Si c'est ce que je crois comprendre, en fait un commande n'est jamais supprimée, c'est juste son statut qui est mis à 'S'. Alors pourquoi ne pas faire l'UPDATE sur la table clients en mettant juste la table commandes en jointure dans l'UPDATE ? Code MySQL :
Code MySQL :
__________________
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
|
|
|
#3 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 266 ![]() |
Effectivement cela fonctionne beaucoup mieux.
Je te remercie. Je vais effectivement conserver ta solution. Mettre le client à supprimer est assez maladroit. Autant récupérer les clients sans ou avec des commandes supprimées. Merci |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 531 ![]() |
N'étant pas encore tombé dans la léthargie de ma sieste vespérale, et ayant l'esprit un peu plus vif qu'à l'heure matutinale où j'ai posté, je m'aperçois que si un client possède plusieurs factures (supprimées ou pas) la requête en interrogation va retourner autant de lignes que de commandes de ce client.
Si l'on ajoute DISTINCT, on aura quand même deux lignes s'il y a au moins une commande chaque (annulée ou pas). Donc on est obligé de passer par une sous-requête corrélée : Code :
__________________
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
|
|
|
#5 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 266 ![]() |
Cette nouvelle requête me ramène l’intégralité des clients avec un statut de commande 'S' alors que tous les clients n'ont pas forcément une commande à 'S'.
La requête précédente me ramène effectivement tous les clients avec le statut de la commande 'S' ou NULL |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 531 ![]() |
Bizarre !
Et comme ça Code :
__________________
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
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 656 ![]() |
Requête scalaire ca pu,
préférez une sous-requête (enfin ceci dit le poisson va encore se mordre la queue, il faudrai plutôt revoir le besoin) : Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 266 ![]() |
Cette requête me ramène le même résultat que la 1ère.
Mais c'est très bien j'ai eu mes réponses. Je vous remercie. |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 656 ![]() |
Dans ce cas, soit :
- vous avez une realtion de type (1,1) entre commande et client - votre jeux de donnée est très limité. |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 266 ![]() |
J'ai une relation 1Client -> nCommandes
et mon jeu de donnée est pas forcément tres limité 5000commandes / années |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com