Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Topic: Ir vėl klaida su delete, join

Mano mysql sakinys toks:

SELECT t1.* 
FROM nw_alliance as t1 
LEFT JOIN nw_alliance_member AS t2 ON t2.aid=t1.id 
GROUP BY t2.aid 
HAVING COUNT(t2.id)<3

Gaunu tiksliai tokisu įrašus kokius man ir reikia ištrinti

DELETE t1.* 
FROM nw_alliance as t1 
LEFT JOIN nw_alliance_member AS t2 ON t2.aid=t1.id 
GROUP BY t2.aid 
HAVING COUNT(t2.id)<3

meta klaidą:

#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 'GROUP BY t2.aid 
HAVING COUNT(t2.id)<3' at line 4

Gal turite gerų minčių?

Re: Ir vėl klaida su delete, join

Nuo kada DELETE sakinyje tiesiogiai galima naudoti GROUP BY / HAVING ir panašius dalykus?

http://dev.mysql.com/doc/refman/4.1/en/delete.html

Jeigu tavo atveju gaunasi, kad tai, ką reikia trinti, yra gaunama su sudėtingu SELECT'u iš tos pačios lentelės, tai prasideda gana sudėtingi dalykai. Tarkim variantas: į laikiną lentelę sutalpinti įrašų, kuriuos reikia trinti ID, tada pagal tą lentele trinti iš pagrindinės pasinaudojant daugelio lentelių sujungimu.

Re: Ir vėl klaida su delete, join

Prieš kelias minutes pasinaudojes senu geru draugu google šiaip ne taip radau:

DELETE t1 . * FROM nw_alliance AS t1 INNER JOIN (
SELECT aid
FROM nw_alliance_member
GROUP BY aid
HAVING count( aid ) <3
) AS t2 ON t2.aid = t1.id

Re: Ir vėl klaida su delete, join

Kažkaip man atrodė, kad čia trinama iš tos pačios lentos kaip ir selectinama (-;

Re: Ir vėl klaida su delete, join

Nu aš iš pavyzdžio kur trina pasikartojančius įrašus panaudojau, bet pilnai veikė ir mano atveju.