[SQL]Requete select à l'intérieur d'un Delete
3 messages
• Page 1 sur 1
- 2fou
- WRInaute discret

- Messages: 223
- Inscription: 7 Juil 2003
[SQL]Requete select à l'intérieur d'un Delete
Bonjour,
je souhaiterai faire un script de suppression de catégorie de produits.
Dans ma base de données, j'ai 3 tables :
- la table categorie : 1 champ idcat, et un champ intitulecat
- la table souscat : 1 champs idsouscat, un champ intitulessoucat, et numcat, l'id de la catégorie à laquelle cette sous catégorie est rattaché
- la table produit : 1 champ idproduit et 1 champ intituleproduit et numsouscat, l'id de la sous-catégorie à laquelle le produit est rattaché.
Sur ma page, je récupère $cat, l'id de la categorie que je veux supprimer.
Je voudrais donc maintenant faire une requete pour supprimer la catégorie choisie mais aussi les souscatégories et produits qui y sont rattachées.
Pour la suppression de la catégorie :
ça a l'air simple : delete from categorie where idcat = '$cat'
Pour la sous catégorie :
idem : delete from souscat where numcat = '$cat'
Parcontre pour la suppression des produits, c'est plus complexe.
il me faudrait je pense faire un Delete de :
SELECT * FROM souscat, produit WHERE numsouscat = idsouscat AND numcat ='$cat'
Savez vous comment faire?
Merci de votre aide
je souhaiterai faire un script de suppression de catégorie de produits.
Dans ma base de données, j'ai 3 tables :
- la table categorie : 1 champ idcat, et un champ intitulecat
- la table souscat : 1 champs idsouscat, un champ intitulessoucat, et numcat, l'id de la catégorie à laquelle cette sous catégorie est rattaché
- la table produit : 1 champ idproduit et 1 champ intituleproduit et numsouscat, l'id de la sous-catégorie à laquelle le produit est rattaché.
Sur ma page, je récupère $cat, l'id de la categorie que je veux supprimer.
Je voudrais donc maintenant faire une requete pour supprimer la catégorie choisie mais aussi les souscatégories et produits qui y sont rattachées.
Pour la suppression de la catégorie :
ça a l'air simple : delete from categorie where idcat = '$cat'
Pour la sous catégorie :
idem : delete from souscat where numcat = '$cat'
Parcontre pour la suppression des produits, c'est plus complexe.
il me faudrait je pense faire un Delete de :
SELECT * FROM souscat, produit WHERE numsouscat = idsouscat AND numcat ='$cat'
Savez vous comment faire?
Merci de votre aide
- shrom
- WRInaute impliqué

- Messages: 865
- Inscription: 5 Juil 2004
Si ton SGBD supporte les clés étrangères et les contraintes d'intégrité, il le fera tout seul à condition d'avoir stipuler la clause "ON DELETE CASCADE".
Sinon tu devras commencer par récupérer les id de tes sous catégories avant de les supprimer pour ensuite supprimer les produits avec ces id, le tout à l'intérieur d'une transaction de préférence.
Sinon tu devras commencer par récupérer les id de tes sous catégories avant de les supprimer pour ensuite supprimer les produits avec ces id, le tout à l'intérieur d'une transaction de préférence.
- 2fou
- WRInaute discret

- Messages: 223
- Inscription: 7 Juil 2003
Merci.
n'ayant pas trouvé comment fonctionne les Delete multitables, j'ai donc du faire plus simple.
// on récupère toutes les souscatégories rattachés à la catégorie selectionné
$q1="select * FROM souscat WHERE numcat ='$cat'";
$mr1=mysql_query($q1, $ml) or die("ERROR SQL :".mysql_error());
// pour chaque sous catégories trouvés
while ($data1 = mysql_fetch_array($mr1))
{
$souscat = $data1['idsouscat'];
// on supprime les produits rattachés à cette sous-catégories
$q2="DELETE FROM produit WHERE numsouscat='$souscat'";
$mr2=mysql_query($q2, $ml) or die("ERROR SQL :".mysql_error());
}
// on supprime les sous catégories rattaché à la catégorie
$q3="DELETE FROM souscat WHERE numcat ='$cat'";
$mr3=mysql_query($q3, $ml) or die("ERROR SQL :".mysql_error());
// enfin on supprime la catégorie
$q4="DELETE FROM categorie WHERE idcat ='$cat'";
$mr4=mysql_query($q4, $ml) or die("ERROR SQL :".mysql_error());
n'ayant pas trouvé comment fonctionne les Delete multitables, j'ai donc du faire plus simple.
// on récupère toutes les souscatégories rattachés à la catégorie selectionné
$q1="select * FROM souscat WHERE numcat ='$cat'";
$mr1=mysql_query($q1, $ml) or die("ERROR SQL :".mysql_error());
// pour chaque sous catégories trouvés
while ($data1 = mysql_fetch_array($mr1))
{
$souscat = $data1['idsouscat'];
// on supprime les produits rattachés à cette sous-catégories
$q2="DELETE FROM produit WHERE numsouscat='$souscat'";
$mr2=mysql_query($q2, $ml) or die("ERROR SQL :".mysql_error());
}
// on supprime les sous catégories rattaché à la catégorie
$q3="DELETE FROM souscat WHERE numcat ='$cat'";
$mr3=mysql_query($q3, $ml) or die("ERROR SQL :".mysql_error());
// enfin on supprime la catégorie
$q4="DELETE FROM categorie WHERE idcat ='$cat'";
$mr4=mysql_query($q4, $ml) or die("ERROR SQL :".mysql_error());
3 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Requete sql INSERT INTO + SELECT (php)
- sql : requête select MAX(champ) from table
- affichage requete sql dans un champ select en temps reel (ou presque...)
- problème requête DELETE
- Requete DELETE qui ne fonctionne pas
- Probleme select SQL
- Optimisation SQL - Inner Join (3) ou 3 x Select ?
- [PHP/SQL] Associer plusieurs SELECT de tables MySQL
- Pb d'organisation d'une UNION de deux requetes SELECT en sql
- SQL : faire un select indifférent aux caractère spéciaux
- Google API : guide de développement de l'API Google - 20-09-2002
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Outils Google pour les entreprises : Google Agency Toolkit - 01-03-2009
- De la publicité ciblée dans les cartes de Google Local - 31-03-2006
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Les adresses IP de Google et Googlebot - 05-10-2006
- Informations sur l'infrastructure technique de Google - 01-11-2004
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
