WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Sortera efter flest kopior (https://www.wn.se/forum/showthread.php?t=1040090)

grinditwp 2010-01-19 15:14

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!

yadis 2010-01-19 16:42

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

tartareandesire 2010-01-19 17:02

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.

yadis 2010-01-19 18:25

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

grinditwp 2010-01-19 18:55

Citat:

Ursprungligen postat av yadis (Inlägg 20339726)
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

Tack! ska testa detta.


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