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 :)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.