mitt lilla problem är att jag har tre stycken tabeller (nyheter, recensioner, kronikor), som alla ser likadana ut, och jag vill göra en topplista på vem som skrivit flest artiklar. Jag skulle helt enkelt vilja ha ut ett resultat som ser ut så här:
Namn - 55 artiklar
Namn2 - 20 artiklar
...osv
Att plocka ut det ur en tabell har jag löst så här:
SELECT vem, COUNT(vem) AS topp FROM nyheter GROUP BY vem ORDER BY topp DESC
... men lyckas inte klura ut hur jag ska få ut det summerade resultatet av dessa tre tabeller.
Mysql, jaha. Om tabellerna är lika varför har du då tre tabeller? Du skulle kunna lägga allt i samma tabell och lägga till en extra kolumn som anger typ.
Den här typen av frågor blir onödigt komplicerade om du har mysql eftersom man måste göra det i flera steg.
skapa en temporär tabell med en kolumn vem och antal
utför group-by frågan på varje tabell och lagra i temp-tabell.
antingen med union (om du har 4.0) eller med tre separata frågor
utför din group by-fråga på temp-tabellen.
select sum(antal),vem from temp group by vem order by 1 desc
Toppensnabbt svar. Fanken, det var alltså jobbigt. Självklart är det smidigare med alla i en tabell; alltid lär man sig något. Hur lägger jag enklast samman mina tre tabeller en gång för alla?
insert into newTable select nyheter.*,'Nyheter' from nyheter
insert into newTable select kronikor.*,'Kronikor' from kronikor
insert into newTable select recensioner.*,'Recensioner' from recensioner