Page 1 sur 2

Delete multitable

Posté : 04 janv. 2007, 21:15
par dredtrake
bonjour a vous, ca fait quelques temps que je m'aides des post du forum, et je n'intervient pas sur le forum, mais je le trouve plutot assé 'pro' au niveau des sujet abordé...
je suis en train de taffer sur une admin et je suis dans le besoin de suprimmer plusieur enregistrements en même temps sur le forum j'ai trouvé quelques post à ce sujet, mais en essayant je n'ai pas réussit et j'ai en retour un message d'erreur sql...
Ma requette est la suivante :

Code : Tout sélectionner

$query_rs = "DELETE agenda_departements, agenda_villes FROM agenda_departements, agenda_villes WHERE agenda_departements.id='$departement_id', agenda_villes.departement_id='$departement_id'" ;
quand je fait un DELETE simple cela fonction, mais là j'ai une erreur que je n'arrive pas a résoudre tout seul, si quelqu'un connais le trick cela m'aiderai beaucoup
merci a vous pour votre attention :wink:
et bonne à nez... :oops:

Posté : 04 janv. 2007, 21:17
par Ajoloca
Bonjour,

Le texte exact de l'erreur nous aiderait à t'aider. Tu ne penses pas ???

EDIT :

La syntaxe de la requête n'est pas correcte.
DELETE FROM tables, table1 WHERE .....
Pas de nom(s) de table(s) entre le "DELETE" et le "FROM"

Posté : 05 janv. 2007, 01:22
par dredtrake
Bonjour,
Le texte exact de l'erreur nous aiderait à t'aider. Tu ne penses pas ???
euh si dsl

msg erreur :

Code : Tout sélectionner

Erreur de syntaxe près de ' agenda_villes.departement_id='3'' à la ligne 1
par contre j'ai essayé différentes syntaxe et aucunes ne fonctionne...
j'ai enlevé aussi les nom des tables entre DELETE et FROM, mais rien non plus...
merci a+

Posté : 05 janv. 2007, 01:27
par Ajoloca
Re,

Tu devrais regarder les syntaxes SQL
agenda_departements.id='$departement_id', agenda_villes.departement_id='$departement_id'"
C'est pas une virgule, mais un opérateur qui doit figurer dans la clause "WHERE"
agenda_departements.id='$departement_id' AND  agenda_villes.departement_id='$departement_id'"

Posté : 05 janv. 2007, 01:41
par dredtrake
YEs tout à fait je m'en suis aussi rendu compte...
mais toujours rien , j'ai consulté la doc, mais j'ai pas réussi à mettre en forme...

pas toujours simple :cry:
[EDIT]ma requette actuelle est :

Code : Tout sélectionner

$query_rs = "DELETE FROM agenda_departements AS t1, agenda_villes AS t2 WHERE t1.id='$departement_id'AND t2.departement_id='$departement_id'" ;
[/EDIT]
a+

Posté : 05 janv. 2007, 02:15
par albat
  • Les AS sont facultatifs pour les alias de tables.
  • Les variables sont plus jolies, extraites de la chaîne. ;)
$query_rs = "DELETE FROM agenda_departements t1, agenda_villes t2 WHERE t1.id=".$departement_id." AND t2.departement_id=".$departement_id; 

Posté : 05 janv. 2007, 02:19
par dredtrake
merci a toi pour ton aide, mais j'ai toujour mon message d'erreur qui me dit :

Code : Tout sélectionner

Erreur de syntaxe près de 'WHERE t1.id=3 AND t2.departement_id=3' à la ligne 1
je devien fou,
en fait hier ca fonctionnais mais en 2 fois en fait j'ai mis les requette de DELETE l'une après l'autre et pas de problèmes, là je voulais faire plus propre...mais c'est à s'arracher les cheveux... :wink: [/code]

Posté : 05 janv. 2007, 02:28
par Ajoloca
Essaie ceci
$query_rs = "DELETE FROM agenda_departements t1, agenda_villes t2 USING t1, t2 WHERE t1.id=".$departement_id." AND t2.departement_id=t1.id; 

Posté : 05 janv. 2007, 02:28
par albat
En farfouillant la doc, j'ai cru comprendre qu'il fallait une jointure entre les tables... :-k

Posté : 05 janv. 2007, 02:29
par albat
Joli simultané, Ajoloca. =D>
J'ai l'impression qu'on en arrive à la même conclusion... :idea:

Posté : 05 janv. 2007, 02:32
par Ajoloca
A première vue, ça doit être ça.
On attend la réponse pour en savoir plus.

Posté : 05 janv. 2007, 02:32
par dredtrake
hello, MErci a vous 2 pour votre aide, mais toujours rien,
@Ajoloca : là ça me dit que ma base.t1 n'existe pas..!!!
@ je jette un oeil... :wink:
Merci de votre patience....
:evil:

Posté : 05 janv. 2007, 02:35
par albat
À tout hasard, vérifie très attentivement tes noms de tables, de champs, de variables.
Et indique-nous l'exact message d'erreur qui t'est affiché.

Posté : 05 janv. 2007, 02:36
par Ajoloca
Pour l'instant essaie comme ça, on verra après pour les alias
$query_rs = "DELETE FROM agenda_departements , agenda_villes  USING agenda_departements , agenda_villes WHERE agenda_departements.id=".$departement_id." AND agenda_villes.departement_id=agenda_departements.id;

Posté : 05 janv. 2007, 02:37
par dredtrake
ahhhhhhhhhhhhhhh
Enfin!!!! :twisted: :twisted: :twisted:
c'est pas trop tôt j'ai enfin réussit !!!!
merci a vous deux pour votre patience remarquable :wink:
en fait j'ai utilisé cette syntaxte :

Code : Tout sélectionner

"DELETE FROM agenda_departements , agenda_villes USING agenda_departements, agenda_villes WHERE agenda_departements.id=".$departement_id." AND agenda_villes.departement_id=".$departement_id;
plus d'alias ni de jointure,....bref je comprend pas pourquoi ça fonctionnais pas, mais bon mieux vaux tard que jammais
encore merci et @ bientot
[edit]@Ajoloca yes, c'est que je me suis dit apres ton exemple avec 'USING'
[/edit]