J'essaye de supprimer de quelques tables à la fois. J'ai fait un peu de recherche et j'ai trouvé ceci
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Cependant, j'obtiens cette erreur
Uncaught Database_Exception [1064]: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de 'p,
pets_activities
pa ...
Je n'ai jamais fait de suppression de tableaux croisés auparavant, donc je suis inexpérimenté et coincé pour le moment!
Qu'est-ce que je fais mal?
SELECT
pris autant de temps?Comme cela semble être une simple relation parent / enfant entre
pets
etpets_activities
, vous feriez mieux de créer votre contrainte de clé étrangère avec une cascade de suppression.De cette façon, lorsqu'une
pets
ligne est supprimée, lespets_activities
lignes qui lui sont associées sont également supprimées automatiquement.Ensuite, votre requête devient simple:
la source
pa
c'est un bon enfant de enp
raison de laid/pet_id
cartographie.Utilisez ceci
ou
la source
Je n'ai pas de base de données mysql à tester pour le moment, mais avez-vous essayé de spécifier ce qu'il faut supprimer avant la clause from? Par exemple:
Je pense que la syntaxe que vous avez utilisée est limitée aux nouvelles versions de mysql.
la source
La syntaxe me semble correcte ... essayez de la changer pour l'utiliser
INNER JOIN
...Jetez un œil à ceci .
la source
Pour tous ceux qui liront ceci en 2017, voici comment j'ai fait quelque chose de similaire.
Généralement, pour supprimer des lignes de plusieurs tables, la syntaxe que je suis est donnée ci-dessous. La solution est basée sur l'hypothèse qu'il existe une relation entre les deux tables.
la source
J'ai trouvé cet article qui vous montre comment supprimer des données de plusieurs tables à l'aide de l' instruction MySQL DELETE JOIN avec une bonne explication.
la source