2011-05-04 6 views
0

Je comprends qu'il est un peu impoli de poser une question sans aucun travail à montrer, mais je suis un peu perplexe et j'ai besoin d'aide.Mettre à jour et supprimer si les champs correspondent

je dois supprimer une ligne d'une table mysql si un autre champ dans une autre table est égale à 1

J'ai deux tables table_1 et table_2

table_1 a deux champs location et events

et table_2 a un champ appelé location qui est le même que location sur table_1

Je voudrais supprimer une ou plusieurs lignes de table_2 si le champ location est le même que table_1 et events = 1

quelque chose comme:

if `events` = 1 in `table_1` in 'location' `*`; 
    delete row(s) from `table_2` 
    where `location` is the same as `location` in `table_1` 
+0

Faire un SELECT (les résultats de traitement), puis une requête SUPPRIMER est trop simple? – Shoe

Répondre

1
DELETE t2 
    FROM `table2` t2 
    JOIN `table1` t1 ON t1.events = 1 
        AND t1.location = t2.location 
+0

t1 me tue je comprends le concept cependant t1.location me donne aussi une erreur. Im tabula tion t1 et t2 sont les champs. – trey

+0

@trey: non son alias pour table1 et table2. –

+0

t1.location est interprétée comme une colonne. ... # 1054 - Colonne inconnue 't1.location' dans 'on clause' – trey

3

Essayez ceci:

delete from `table_2` 
    where location in (select location from `table_1` where events=1) 

Modifier

DELETE t2 FROM `table_2` t2 
    JOIN `table_1` t1 ON t1.location = t2.location where t1.events=1 
+0

phpmyadmin n'accepte pas ce format. J'ai essayé plusieurs fois – trey

+0

@trey: Je ne connais pas grand-chose en PHP. Mais cela donne-t-il une erreur? Ce problème est lié à PHP ou à ma requête? –

+0

elle n'accepte rien à l'intérieur des parenthèses (sélectionnez l'emplacement de 'table_1' où events = 1) – trey

Questions connexes