Select, count and delete in one query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hia Wahta

Hia Wahta

05/04/2012 22:18:21
Quote Anchor link
Hallo eidereen,

Ik heb een vraag. Ik heb 3 tabellen

1) met_ID (primair) etc.
2) magn_ID (primair)
met_ID (secondary)
...
3) sens_ID (primair)
met_ID (secondary)
...

Ik moet gegevens (met_ID) uit tabel 1 delete waar met_ID komt minder dan 10 keer voor in tabellen 2 OF 3.

SELECT COUNT(*) AS count, met_ID
FROM tbl_1, tbl_2
Where met_ID = met_ID
GROUP BY met_ID

hier mee krijg ik een tabel met aantal records en met_ID, en dan in PHP met een while loop delete ik alle met_ID regels uit de database waar count<10. Is het mogelijk om zo iets direct met query te maken? Want met 1000 regels gaat het nog redelijk snel, maar bij 10 000 zal het fout gaan.
Misschien is er al voor mij sortgelijke vraag gesteld, maar ik weet ook niet op welke trefwoorden moet zoeken.
Alfast bednakt voor jullie tijd!
Gewijzigd op 05/04/2012 22:37:14 door Hia Wahta
 
PHP hulp

PHP hulp

24/11/2024 15:21:11
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/04/2012 06:28:44
Quote Anchor link
Dat kan met een subquery met GROUP BY ... HAVING in de WHERE clause:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
DELETE FROM tbl_1
WHERE met_id IN
    (SELECT met_id
     FROM tbl_2
     GROUP BY met_id HAVING (COUNT(met_id) < 10)
    UNION
     SELECT met_id
     FROM tbl_3
     GROUP BY met_id HAVING (COUNT(met_id) < 10))
 
Hia Wahta

Hia Wahta

07/04/2012 01:45:19
Quote Anchor link
thanks!! It works like charm :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.