Probleem met MULTI DELETE
DELETE producten.id, producten.cat_id, producten.naam, producten.omschrijving, producten.prijs, producten.foto
FROM `producten`
JOIN categorie ON ( producten.cat_id = categorie.id )
WHERE categorie.cat=65
en als ik die dan uitvoer dan krijg ik de volgende error
Unknown table 'id' in MULTI DELETE
Maar ik weet niet welke table id hij bedoeld
Het is gewoon "DELETE FROM tabel" en niet "DELETE blahblah FROM tabel". Want je verwijdert een row, en je kunt niet halve rows verwijderen. Op deze manier ziet hij producten.id dus als een tabel.
zet is tussen quotes
Query :
DELETE
FROM `producten`
JOIN categorie ON ( producten.cat_id = categorie.id )
WHERE categorie.cat=65
Error :
#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 'JOIN categorie ON ( producten.cat_id = categorie.id )
WHERE categorie.cat=65' at line 3
EDIT :
Query :
DELETE `producten.id`, `producten.cat_id`, `producten.naam`, `producten.omschrijving`, `producten.prijs`, `producten.foto`
FROM `producten`
JOIN categorie ON ( `producten.cat_id` = `categorie.id` )
WHERE categorie.cat='65'
Error :
#1103 - Incorrect table name 'producten.id'
Terwijl die duidelijk bestaad
Gewijzigd op 01/01/1970 01:00:00 door dietger marechal
Wat probeer je te bereiken met die JOIN? Wat probeer je überhaupt te bereiken? Het lijkt er op dat je een keer iets moet lezen over foreign keys.
die JOIN:
Ik heb dus de volgende mysql query
"select id from `categorie` where cat = 2 order by id ASC"
en als resultaat geeft mij dat met phpadmin
id
4
41
42
52
53
54
55
56
"select * from `producten` where cat_id=[AL DIE ID`S] order by cat_id ASC"
En dan krijg je de query:
SELECT categorie.naamcat, producten.naam, producten.prijs FROM `producten`
JOIN categorie ON (producten.cat_id = categorie.id)
WHERE categorie.cat=$catpdfid
ORDER BY categorie.naamcat ASC
die ik altijd gebruik.
Gewijzigd op 01/01/1970 01:00:00 door dietger marechal
Dat kan ik indeed maar die 2 is eigenlijk $id en dan is mijn resultaat altijd anders.
DELETE FROM producten WHERE cat_id IN (SELECT id FROM categorie WHERE cat = 65)
#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 'FROM producten WHERE cat_id IN ( SELECT id FROM categorie WHERE cat = 65 )
L' at line 1
IN is een heel normale functie. Bovenstaand moet absoluut werken, kijk of je niks fout hebt gespeld ofzo.
K bedankt, Het werkt
SELECT * FROM categorie WHERE cat IN (SELECT id FROM categorie WHERE id=65)
ok dit werkt maar als ik nu dit doe
DELETE FROM categorie WHERE cat IN (SELECT id FROM categorie WHERE id=65)
Dan krijg ik
#1093 - You can't specify target table 'categorie' for update in FROM clause
Hoe los ik dit dan op. Alvast bedankt !
Workaround maak een VIEW met alles in categorie
Code (php)
1
2
3
4
5
2
3
4
5
CREATE VIEW cat_view AS SELECT * FROM categorie
DELETE FROM categorie
WHERE cat IN (SELECT id FROM cat_view WHERE cat=65)
DELETE FROM categorie
WHERE cat IN (SELECT id FROM cat_view WHERE cat=65)
Edit:
typo
typo
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven