Rechercher : dans
Par :

SQL : delete [s/ une table] from [2 tables]..

Dernière réponse le 14 avr 2008 à 10:12:14 Doudi911, le 5 mai 2006 à 15:56:20 
 Signaler ce message aux modérateurs

Salut à tous.

J'ai un soucis pour faire une requete supression :
Je veux supprimer les enregistrement d'une table, mais la sélection se fait en liaison avec une autre table...
Je ne sais pas comment faire (sortie de mes select * from une table, en fait, je ne sais pas faire grand chose d'autre).

concretement :
la première table concerne des sorties (idsortie, nom, date...)
La seconde table concerne les commentaires faits par les visiteurs, et en rapport avec ces evenements. (idcomment, idsortie, idmembre, msg...)

Quand la sortie a eu lieu, je souhaite la conserver dans la table des sorties (car j'y ai un champ url pour le compte rendu), mais je souhaite supprimer tous les commentaires dans la table des commentaires.

j'ai donc une requete pour identifier s'il y a des evenements passés qui ont des commentaires. ça donne ça :
SELECT idcomment FROM sorties,sortie_comments WHERE sorties.date<='$date' AND sorties.idsortie=sortie_comments.idsortie

de là j'ai un mysql_num_rows qui m'indique s'il y a des commentaires à supprimer.

Mais je ne vois pas comment faire ma requete de suppression uniquement dans la table sortie_comments.

si je fais comme ceci :

DELETE FROM sortie_comments WHERE sorties.date<='$date' AND sorties.idsortie=sortie_comments.idsortie

SQL me le refuse car je ne lui indique pas au préalable (dans le "from") la table "sorties".

Mais si le lui indique, j'ai un peu peur qu'il m'efface aussi la sortie dans la table sortie.

Comment faire ?

Merci de votre aide ;)

Doudi

Meilleures réponses pour « SQL : delete [s/ une table] from [2 tables].. » dans :
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...

1

blux, le 5 mai 2006 à 16:30:01
  • +2

Salut,

as-tu essayé les select imbriqués ?

DELETE * FROM Sortie_Comments WHERE idsortie IN (SELECT idsortie FROM sorties WHERE sorties.date <='$date');
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

2

Doudi911, le 5 mai 2006 à 16:37:05
  • +1

Whouahou....
Non, je n'avais pas essayé, et pour cause, je ne connaissais pas encore cette syntaxe :)
(bon OK, j'ai encore beaucoup à apprendre, ça se confirm !!!).

A lire, ça a l'air simple, et pour le moins explicite, ça devrait donc marcher sans problème.

MEGA GROS MERCI pour ça, c'est super sympa, merci merci merci ;-)

Bon je confirme, ça marche impec. (j'ai juste viré le '*' après DELETE).

Génial, ça c'est de la syntaxe qui me parle !

@+

Doudi

Répondre à Doudi911

3

blux, le 5 mai 2006 à 16:45:42
  • +1

Ca n'est malheureusement pas supporté par tous les SGBDR :-(

Mais content que ce soit le cas pour le tien :-)
A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

4

Doudi911, le 5 mai 2006 à 16:56:47
  • +1

Je tourne sous easyphp (la ou j'ai fait le test), sinon le site est hébergé chez 1&1, mais j'ai pas encore testé chez eux.
J'ai trouvé une alternative qui a l'air de fonctionner aussi, en cherchant par ailleurs :

DELETE FROM sortie_comments WHERE EXISTS (SELECT * FROM sorties WHERE sorties.date<='$date' AND sortie_comments.idsortie=sorties.idsortie)

Mais ta technique est plus "parlante" pour le novice que je suis :)

Encore merci ;)

Doudi

Répondre à Doudi911

5

 Conradson, le 14 avr 2008 à 10:12:14

Merci, c'est tout ce dont j'avais besoin !

Répondre à Conradson
Collection CommentÇaMarche.net