![]() |
Sortera efter flest kopior
Har kanske en udda fråga, men vi testar.
Jag har en flera tabeller i så kallad Many 2 Many struktur. Tabellerna jag har är: url, url2user och user Alla raderna i tabellerna är unika, men user kan ha flera länkar via url2user, lika så kan varje länk ha flera users. Vad jag vill är att sortera ut de 5 länkar som har flest users knutna till sig. Men hur skulle frågan se ut i SQL? Tack! |
Denna SQL är för SQL-server, men om du har t.ex MySQL så är nog syntaxen snarlik.
Jag har gissat vad dina fält heter i respektive tabell. Nåt sånt här blir det: SELECT TOP 5 Url.Link, Count(User.UserID) as AntalUsers FROM Url, Url2User, User WHERE Url.UrlID = Url2User.UrlID AND Url2User.UserID = User.UserID Group by Url.Link ORDER BY AntalUsers DESC |
Med undantag för TOP 5 så fungerar det även för MySQL. Om detta görs ofta så kan det dock vara en mer effektiv lösning att räkna upp url:er per användare istället.
|
Kollade lite på nätet o verkar som man skriver top 5 så här i MySQL(LIMIT 5):
SELECT Url.Link, Count(User.UserID) as AntalUsers LIMIT 5 FROM Url, Url2User, User WHERE Url.UrlID = Url2User.UrlID AND Url2User.UserID = User.UserID Group by Url.Link ORDER BY AntalUsers DESC |
Citat:
|
Alla tider är GMT +2. Klockan är nu 06:42. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson