Bonjour,
J'aimerais supprimer un certain nombre d'enregistrements dans de multiples tables toutes liées entre elle à partir d'une seule information. Ma requête passe mais n'affecte aucun enregistrement. Pourriez vous m'aider?
Voici la requête:
Et voici la structure de mes tables:
Je pense que le problème vient de l'ordre des conditions dans Where, mais je n'ai pas confirmation. Actuellement, je commence par supprimer le haut de la pyramide, pour ainsi dire, donc l'identité de l'élément parent absolu visé. Dans la mesure où tout se situe dans une seule requête delete, je n'en suis pas certain, mais peut être devrais je commencer par éliminer les éléments dont aucune donnée ne dépend (comme les images) avant d'éliminer l'élément dont dépend toute l'expression, non?
En vous remerciant de vos lumières^^
Smoke
Modifié par Smoke (22 Oct 2009 - 14:03)
J'aimerais supprimer un certain nombre d'enregistrements dans de multiples tables toutes liées entre elle à partir d'une seule information. Ma requête passe mais n'affecte aucun enregistrement. Pourriez vous m'aider?
Voici la requête:
delete cat_id id, cat_rel rel, bCat_config bg, sCat_config sg, cat_status cs, cat_images ci, images i
from cat_id id, cat_rel rel, bCat_config bg, sCat_config sg, cat_status cs, cat_images ci, images i
where
id.ref_cat='/*ici je transmet la référence d'une grande catégorie*/'
and rel.ref_bCat=id.ref_cat
and bg.ref_cat=id.ref_cat
and sg.ref_cat=rel.ref_cat
and cs.ref_cat=rel.ref_cat and cs.ref_cat=id.ref_cat
and ci.ref_sCat=rel.ref_cat
and i.ref_image=ci.ref_sCat
Et voici la structure de mes tables:
CREATE TABLE IF NOT EXISTS `bCat_config` (
`ref_cat` char(10) NOT NULL default '',
`outFocus` char(14) default NULL,
PRIMARY KEY (`ref_cat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `cat_id`
--
CREATE TABLE IF NOT EXISTS `cat_id` (
`ref_cat` varchar(10) NOT NULL default '',
`ctype` enum('s','b') NOT NULL default 's',
`nom` varchar(30) default NULL,
`image` varchar(14) default NULL,
`onFocus` varchar(14) NOT NULL default '',
PRIMARY KEY (`ref_cat`),
KEY `type` (`ctype`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `cat_images`
--
CREATE TABLE IF NOT EXISTS `cat_images` (
`ref_image` char(10) NOT NULL default '',
`ref_sCat` char(10) default NULL,
PRIMARY KEY (`ref_image`),
KEY `byCat` (`ref_sCat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `cat_rel`
--
CREATE TABLE IF NOT EXISTS `cat_rel` (
`ref_cat` char(10) NOT NULL default '',
`ref_bCat` char(10) NOT NULL default '',
PRIMARY KEY (`ref_cat`),
KEY `ref_bCat` (`ref_bCat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `cat_status`
--
CREATE TABLE IF NOT EXISTS `cat_status` (
`ref_cat` char(10) NOT NULL default '',
`status` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`ref_cat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `images`
--
CREATE TABLE IF NOT EXISTS `images` (
`ref_image` varchar(10) NOT NULL default '',
`mini` varchar(50) default NULL,
`image` varchar(50) default NULL,
`position` tinyint(2) default NULL,
PRIMARY KEY (`ref_image`),
KEY `position` (`position`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `sCat_config`
--
CREATE TABLE IF NOT EXISTS `sCat_config` (
`ref_cat` char(10) NOT NULL default '',
`outFocus` char(14) default NULL,
`onFocus` char(14) default NULL,
PRIMARY KEY (`ref_cat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Je pense que le problème vient de l'ordre des conditions dans Where, mais je n'ai pas confirmation. Actuellement, je commence par supprimer le haut de la pyramide, pour ainsi dire, donc l'identité de l'élément parent absolu visé. Dans la mesure où tout se situe dans une seule requête delete, je n'en suis pas certain, mais peut être devrais je commencer par éliminer les éléments dont aucune donnée ne dépend (comme les images) avant d'éliminer l'élément dont dépend toute l'expression, non?
En vous remerciant de vos lumières^^
Smoke
Modifié par Smoke (22 Oct 2009 - 14:03)