webForumDet fria alternativet

Sortering med join?

Databaser & SQLur Databashanterare & SQL

5 svar · 548 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#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!

Medlem 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
Medlem 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.

Medlem 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
Medlem 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. :)

Medlem sedan dec. 20025 483 inlägg
#6

Red./ Sen...

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