17. september 2001 - 13:14Der er
10 kommentarer og 1 løsning
Select/order/count ting?
Jeg har en tabel med artikler\'s keywords (til news etc), for at kunne finde relaterede artikler.
den er bygget som:
artikel_id (unique index), keyword
og så er det jo så, at jeg skal bruge alle artikel id\'s, på artikler der har keywords tilfælles med et givet artikel_id - ordnet efter antal sammenfald, så f.x. med:
Artikel_id: keyword: 0001 internet 0001 hjælp 0001 ekspert
0002 internet 0002 nyheder 0002 php
0003 internet 0003 ekspert 0003 php
0004 sex 0004 online 0005 free
hvis jeg giver artikel_id 0003, så skal min select returnere (ordnet efter sammenfald) 0001, 0002, fordi der er 2 sammenfald med 0001 og et sammenfald med 0002, og ingen sammenfald med 0004...
jeg bruger postgresql, så der er ingen bøvl med subselects, men det behøver ikke være specielt rdbm-afhængigt, for jeg skal sikkert bruge det andre steder :)
du læser ikke hvad der står, ellers udtrykker jeg mig ikke klart nok...
Det drejer sig ikke om antallet af records der matcher i en eller anden grad, men en ORDER BY således at de records der matcher *flest keywords* kommer ud først..
Ahhh, nej jeg læste vist ikke hvad der stod - beklager ;o). Jeg er altså stadig i tvivl med postgresql, men du kan prøve med denne (virker i Oracle SQL):
select count(keyword) as antal, artikel_id from tabel where keyword in (select keyword from tabel where artikel = 0003)group by artikel_id order by antal
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.