Toon posts:

[MySQL] probleem met Delete query

Pagina: 1
Acties:
  • 499 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil in een query rijen van meerdere tabellen verwijderen. Het gaat om de volgende query:

DELETE FROM
nieuws as n,
nieuwsReacties as r
WHERE
n.id = r.nieuwsID
AND
n.id = 4

Dit is de foutmelding:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'as n,
nieuwsReacties a r
WHERE
n.id = r.nieuwsID
AND
n.

Ik heb mysql 4.0.22. Deze ondersteund het DELETE commando op meerdere velden. Ziet iemand wat ik fout heb gedaan? Of heb je een suggestie?

Alvast bedankt!

  • veer0318
  • Registratie: September 2003
  • Laatst online: 01-04 09:38
Geen idee of dit echt de oplossing is, maar haal dat "as (...)" eens weg, en gebruik de volledige naam...

Verwijderd

Topicstarter
Dit werkt net zo goed niet:

DELETE FROM
nieuws,
nieuwsReacties
WHERE
nieuws.id = nieuwsReacties.nieuwsID
AND
nieuws.id = 4

Het lijkt goed als ik het vergelijk met voorbeeld queries.

Verwijderd

De syntax voor deleten uit multiple tables is anders, zie: http://dev.mysql.com/doc/mysql/en/DELETE.html#IDX1562

Probeer 't zo 's:

code:
1
2
3
4
5
6
7
DELETE FROM
nieuws as n,
nieuwsReacties as r
USING
n.id = r.nieuwsID
WHERE
n.id = 4

Verwijderd

Topicstarter
Dat werkt ook niet. Ik heb de handleiding nog eens gelezen. Volgens mij is het niet mogelijk om met 1 query rijen uit meerdere tabellen te verwijderen.

Ik doe het nu met 2 query's wat wel werkt.

Bedankt voor jullie reacties!

  • Dirkson
  • Registratie: Oktober 2000
  • Laatst online: 15-12-2025
Nog een variant. (Niet getest maar wel syntactisch juist)
code:
1
2
3
4
DELETE n, r
FROM nieuws as n, nieuwsReacties as r
WHERE n.id = r.nieuwsID
AND n.id = 4

  • ZonderZout
  • Registratie: Januari 2003
  • Laatst online: 04-05 02:48
Moet het niet iets zijn als:

code:
1
2
3
DELETE FROM nieuws n, nieuwsReacties r
WHERE n.id = 4
OR r.nieuwsID = 4

Aldus, naar waarheid ingevuld


  • Dirkson
  • Registratie: Oktober 2000
  • Laatst online: 15-12-2025
code:
1
DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
en

code:
1
DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
worden als voorbeeld gegeven op de link die _J_R_R gaf. Echter _J_R_R's uiwterking van het 2e voorbeeld is niet helemaal juist. Dat had

code:
1
2
3
4
DELETE FROM n, r
USING nieuws as n, nieuwsReacties as r
WHERE n.id = r.nieuwsID
AND n.id = 4
moeten zijn volgens mij.

Verwijderd

Topicstarter
Dit is een query die ik zelf gebruik en werkt:
code:
1
2
3
4
5
6
7
8
9
10
DELETE 
                                                news_items,
                                                news_reactions 
                                  FROM
                                                news_items ni,
                                                news_reactions nr
                                  WHERE 
                                                ni.id = " . $USER_INPUT['int_id'] . "
                                  AND 
                                                nr.newsID = " . $USER_INPUT['int_id']
moeten zijn volgens mij.[/quote]

Het werkt alleen nog niet helemaal zoals ik wil. Ik wil namelijk berichten verwijderen en alle reacties daarop. Als er geen reacties zijn wordt er helemaal niks verwijderd. Ik heb het al met OR geprobeerd maar dat hielp niet.

[ Voor 32% gewijzigd door Verwijderd op 22-11-2004 12:25 ]


  • Dirkson
  • Registratie: Oktober 2000
  • Laatst online: 15-12-2025
code:
1
2
3
4
DELETE n, r
FROM nieuws as n 
LEFT JOIN nieuwsReacties as r ON n.id = r.nieuwsID
WHERE n.id = 4


zou het dan moeten doen,
Pagina: 1