Subselect? - összetett lekérdezés
Sziasztok!
Drupal 5.x-et használok, s egy adatbázislekérésben szeretném a segítségeteket kérni!
Jelenleg a "user"-ek "node"-jaihoz kapott "ajánlásokat" összesíti a lekérés és a "user"-eket eszerint listázza:A cél az, hogy csak ahhoz a három "node"-hoz kapott ajánlásokat összesítse tagonként, amik ez adott tagnál a legtöbb "ajánlást" kapták.
Tehát van a Jani, a Béla userünk, a nodek és az ajánlások száma.
Jani:
Bla - 10 ajánlás
Blaa - 5 ajánlás
Blaaa - 3 ajánlás
Blaaaa - 2 ajánlás
Béla:
Ble - 10 ajánlás
Blee - 5 ajánlás
Az én lekérésem ezt hozná ki eredményül:
Jani - 20 ajánlás
Béla - 15 ajánlás
Viszont én azt szeretném, hogy az adott user(például Jani) csak a három legtöbb ajánlást kapott nodejának ajánlásai adódjanak össze; tehát Jani ajánlásainak számához azt írja ki, hogy: 18 (10+5+3)
Már több napja próbálkozom, de nem sikerült rájönnöm a megoldásra :)
Előre is köszönöm a segítséget!
■ Drupal 5.x-et használok, s egy adatbázislekérésben szeretném a segítségeteket kérni!
Jelenleg a "user"-ek "node"-jaihoz kapott "ajánlásokat" összesíti a lekérés és a "user"-eket eszerint listázza:
SELECT
COUNT (ajanlas.nid) AS count, users.name
FROM users
LEFT JOIN node ON node.uid = users.uid
LEFT JOIN ajanlas ON node.nid = ajanlas
GROUP BY users.uid
ORDER BY count DESC
Tehát van a Jani, a Béla userünk, a nodek és az ajánlások száma.
Jani:
Bla - 10 ajánlás
Blaa - 5 ajánlás
Blaaa - 3 ajánlás
Blaaaa - 2 ajánlás
Béla:
Ble - 10 ajánlás
Blee - 5 ajánlás
Az én lekérésem ezt hozná ki eredményül:
Jani - 20 ajánlás
Béla - 15 ajánlás
Viszont én azt szeretném, hogy az adott user(például Jani) csak a három legtöbb ajánlást kapott nodejának ajánlásai adódjanak össze; tehát Jani ajánlásainak számához azt írja ki, hogy: 18 (10+5+3)
Már több napja próbálkozom, de nem sikerült rájönnöm a megoldásra :)
Előre is köszönöm a segítséget!
Rossz kérdés?
elnézést...
SELECT COUNT( ajanlas.nid ) AS count, users.name FROM users LEFT JOIN node ON node.uid = users.uid LEFT JOIN ajanlas ON node.nid = ajanlas.nid GROUP BY users.uid ORDER BY count DESC
(egy nid lemaradt.)
Csak hogy tisztázzuk: a
Igen :-)
Először ki kell válogatnod
ha van már egy ilyen táblád pl : node3
nev, ajanlasok_szama, nid
Jani 10 bla
Jani 5 blaa
Jani 3 blaaa
Jani 2 blaaaa
Béla 10 ble
Béla 5 blee
akkor a node3 descartes szorzatából: from node3 t1 , node3 t2
le tudod válogatni nevenként az első 3 legnagyobb szavazatot . (Bélánál csak kettő lesz)