rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

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

Doudi911, le vendredi 5 mai 2006 à 15:56:20
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
Répondre à Doudi911  Signaler ce message aux modérateurs Aller au dernier message

1


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 mai 2006 à 16:30:01
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


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Doudi911, le vendredi 5 mai 2006 à 16:37:05
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


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 mai 2006 à 16:45:42
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


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Doudi911, le vendredi 5 mai 2006 à 16:56:47
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Conradson, le lundi 14 avril 2008 à 10:12:14
Merci, c'est tout ce dont j'avais besoin !
Répondre à Conradson
Logiciels pertinents trouvés dans les téléchargements
Télécharger MySQL 5.0.67MySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Télécharger SuperCopier 2 beta 1.9SuperCopier 2 - SuperCopier est un gestionnaire de copie de fichiers libre pour Windows, proposant des fonctionnalités non couvertes par le...Catégorie: Gestion de fichiers
Licence: Freeware/gratuit
Télécharger Foobar 2000 0.9.5.5Foobar 2000 - Foobar2000 est un lecteur audio avancé pour les plateformes Microsoft Windows. Son interface graphique est volontairement...Catégorie: Lecteurs audio
Licence: Freeware/gratuit
Télécharger PowerArchiver 2001 6.0PowerArchiver 2001 - Power Archiver est un équivalent gratuit de WinZip avec des fonctionnalités en plus, avec une version en français !!Catégorie: Compression/Décompression
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « SQL : delete [s/ une table] from [2 tables].. »