webForumDet fria alternativet

Sortering med join?

5 svar · 548 visningar · startad av Melea

MeleaMedlem sedan juli 20033 147 inlägg
#1

Tjena!

Jag har två tabeller, en för kategorier (tbl_cat) och en för poster (tbl_post) som tillhör en kategori. Om jag nu vill lista alla kategorier och bredvid skriva ut senaste posten i tbl_post, hur gör jag då?
Jag har testat lite med left join, men då listar den kategorierna så många gånger som det finns poster i tbl_post.

tbl_cat ser ut såhär:
id, category
1, kategori 1
2, kategori 2
3, kategori 3
4, kategori 4

...och tbl_post ser ut såhär:
id, catid, date
1, 1, 2005-01-20
2, 1, 2005-01-25
3, 2, 2005-01-10
4, 3, 2005-01-15
5, 4, 2005-02-01
6, 4, 2005-01-05

Önskat resultat:
kategori 1 - senaste datum från tbl_post, i detta fallet 2005-01-25
kategori 2 - 2005-01-10
osv...

Tack!

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select tbl_cat.category, max(tbl_post.date)
  from tbl_cat join tbl_post on tbl_cat.catid = tbl_post.catid
 group by tbl_cat.category
MeleaMedlem sedan juli 20033 147 inlägg
#3

LarsG skrev:

select tbl_cat.category, max(tbl_post.date)
  from tbl_cat join tbl_post on tbl_cat.catid = tbl_post.catid
 group by tbl_cat.category

Tack! :)

Visste inte att min och max kunde jobba med datum.

MeleaMedlem sedan juli 20033 147 inlägg
#4

Hm, har testat lite, men det vill inte funka, eftersom den inte hämtar den senaste (max()) på datumet, i order by-argumentet.

select tbl_cat.category, max(tbl_post.date)
  from tbl_cat join tbl_post on tbl_cat.catid = tbl_post.catid
 group by tbl_cat.category
  order by tbl_post.date desc
MeleaMedlem sedan juli 20033 147 inlägg
#5

Var ju långt mycket enklare än vad man trodde. Sätt ett prefix på max(tbl_post.date), typ "date", och sortera efter det prefixet. :)

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Red./ Sen...

133 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)