[MySql] max() row + rest van die row uit gejoinde tabel.

Pagina: 1
Acties:

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 22-09 10:26

klokop

swiekie swoeng

Topicstarter
't Is 'n tikje lastig om m'n vraag in het subject veld te proppen. Bear with me:

Stel 2 tabellen

code:
1
2
3
4
5
6
7
8
9
10
create table parent (p_id int(1))
insert into parent (p_id), (1), (2), (4)

create table child (c_id int(1), c_p_id int(1), c_bla int(1))
insert into child (c_id, c_p_id, c_bla) 
(1,1,80),
(2,1,60),
(3,2,70),
(4,2,90),
(5,2,30)


Om de max. waarde van c_id te vinden die hoort bij een p_id kan je doen:
code:
1
2
3
4
5
6
select 
  p_id, 
  max(c_id)
from parent 
inner join child on c_p_id = p_id 
group by c_p_id


Resultaat is dan:
code:
1
2
3
p_id | max(c_id)
1 | 2
2 | 5


Ik ben alleen niet geinteresseerd in dee waarde van c_id, maar in de waarde van c_bla die hoort bij de max. waarde van c_id (per p_id). Dus niet de max(c_id), maar de c_bla die *hoort bij* de max(c_id). Dus als resultaat zou ik willen krijgen:
code:
1
2
3
p_id | max(c_id)
1 | 60
2 | 30


Ik snap ff niet hoe ik dat in die ene query voor elkaar zou kunnen krijgen...

"Passing silhouettes of strange illuminated mannequins"


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Lees het eea over een groupwise maximum en je hebt de query in no time. :)

{signature}


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 22-09 10:26

klokop

swiekie swoeng

Topicstarter
Voutloos schreef op donderdag 18 december 2008 @ 20:05:
Lees het eea over een groupwise maximum en je hebt de query in no time. :)
Thanks dude.
code:
1
2
3
4
5
6
7
8
9
10
11
select 
  p_id,
  a.c_bla
from parent 
inner join child a 
  on a.c_p_id = p_id 
where c_id in 
  (select 
     max(c_id) 
   from child b 
   group by b.c_p_id);

"Passing silhouettes of strange illuminated mannequins"