ugrás a tartalomhoz

JOIN + LIMIT + GROUP BY + COUNT?

EL Tebe · 2012. Feb. 18. (Szo), 11.57
SELECT m.megye, m.megye_id, a.megyehez_tartozo_adat
FROM megyek AS m
INNER JOIN adatok AS a
USING ( megye_id )
Azt szereném valahogy megoldani, hogy az iménti lekérdezés megyénként (m.megye_id-nként) maximum 3 db. megyehez_tartozo_adat találatot adjon vissza..

megye1->adat1
megye1->adat2
megye1->adat3
megye2->adat1
megye2->adat2
megye3->adat1
megye3->adat2
megye3->adat3

Kiegészítés: mysql adatbázisról van szó
 
1

Nem tudom, ez jó-e

Pepita · 2012. Feb. 18. (Szo), 16.33
  1. SELECT m.megye, m.megye_id,   
  2. ( SELECT a.megye_id, a.megyehez_tartozo_adat FROM adatok AS a LIMIT 3 )  
  3. FROM megyek AS m   
  4. WHERE m.megye_id = a.megye_id   
  5. GROUP BY m.megye_id  
Gondolom ehhez vagy két lekérdezést kell összefűzni, vagy tárolt eljárásban végigiterálni a megye táblán, létrehozni egy temp táblát mindig hozzáadva a szükséges új rekordokat, majd azt egy SELECT-el visszaadni. Utána viszont meg is kell szüntetni a temp táblát.
2

oracle

Raziel Anarki · 2012. Feb. 18. (Szo), 17.20
mivel nem írtad, milyen adatbázist használsz, írok egy ORACLE-s példát, hátha
  1. SELECT   
  2.     m.megye,   
  3.     m.megye_id,   
  4.     a.megyehez_tartozo_adat,   
  5.     ROW_NUMBER() OVER (PARTITION BY m.megye_id ORDER BY m.megye_id) AS row  
  6. FROM   
  7.     megyek AS m INNER JOIN adatok AS a USING (megye_id)  
  8. WHERE   
  9.     row < 4  
(amúgy ezeket az analitikus funkciókat hiányolom nagyon néha MySQL-ből)
3

Ügyes. Köszönöm, ezt

kuka · 2012. Feb. 20. (H), 11.22
Ügyes. Köszönöm, ezt elraktározom.

Érdekes, hogy PostgreSQL-ben ugyanez a window szintaxis de egy dolog nem működik: a where-ben nem látható a row. Ezért muszáj al-lekérdezésbe gyömöszölni a window részt.
4

ööö

razielanarki · 2012. Feb. 20. (H), 20.17
gyors példa volt emlékezetből, lehetséges h oracle-ben sem látszik és ott is allekérdezésben kell legyen :)
(illetve egyből a where-ben)

ha jól tévedek csak az order by látja az azonos szinten lévő neveket
5

mysql,

EL Tebe · 2012. Feb. 21. (K), 12.42
de minden megoldás érdekel, mert egy problémára, sok apró plussz infóval tanul igazán az ember.