21. november 2002 - 12:08Der er
13 kommentarer og 1 løsning
DISTINCT på 2 felter (haster)
Jeg forsøger at lave et SQL udtryk som henter unikke rækker. Problemet er at en artikel kan have flere kategorier og derfor kan optræde flere gange.
Det jer er ude efter er vel noget som (DISTINCT(ID), DISTINCT(CATEGORYID), sådan at jeg aldrig får den samme artikel ELLER den samme kategory på forsiden samtidig !?
strSQL = "SELECT DISTINCT(ARTICLE.ID), CATEGORYARTICLE.CATEGORYID, ARTICLE.ICONA, ARTICLE.ICONB, ARTICLE.ICONC, ARTICLE.PUNCHLINE, ARTICLE.TITLE, CATEGORY.TITLE AS CATEGORYARTICLE FROM ARTICLE, CATEGORYARTICLE, CATEGORY WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORY.ID = CATEGORYARTICLE.CATEGORYID AND AKTIV = 1 AND CATEGORY.ID <> 22 AND CATEGORY.ID <> 38 AND CATEGORY.ID <> 15 AND ('"& SQLdate &"' >= STARTTIME OR FRONTSHOW = 1) ORDER BY RAND() LIMIT 4;"
Mit eneste alternativ er at lave 4 SQL sætninger hvor nr. 2,3,4 udelukker de ID's samt kategorier som de forrige har hentet.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
select id, categoryid from ...... where .... group by id, categoryid
Det fremgår så ikke helt hvad du skal bruge de andre felter, du beder om til? De er jo typisk forskellige for samme id+categoryid, og hvad skal så vælges?
Du kan ikke umiddelbart bruge DISTINCT til dit formål, da DISTINCT gælder for HELE dit SELECT udtryk.
Det "nemmeste" du kan gøre er:
mulighed 1: fjerne CATEGORY fra dit SELECT udtryk, og efterfølgende finde en kategori som artiklen er tilknyttet.
mulighed 2: ved gennemløb af resultatet holdes styr på hvilke id'er du viser, og undertrykke flere visninger af samme id (hmm.. ikke særlig klart formuleret, beklager)
sorry - frokost:) Jeg skal hente 4 forskellige artikler fra en database og vise dem på forsiden. De andre elementer er bl.a. billedstier, titel, indledningstekst.
>erikjacobsen - Hvad skal GROUP BY gøre godt for ?
Jeg kan godt sørge for at den ikke viser samme ID, men jeg ville også helst have 4 forskellige kategorier på forsiden. For ikke at have 4 selects ville jeg forsøge at køre det med 1 sql sætning.
Så er jeg vist ude i at opbygge 4 SQL udtryk, hvor 2,3,4 benytter de forriges kategori til at sikre at denne ikke dukker op igen. ÆV
Så lad være med at sætte limit på (eller i hvert fald noget højere end 4). SQL-sætningen sørger for at id-erne er unikke. Og så laver du en while-løkke der skipper kategorier, der allerede er blevet vist. Og som standser efter 4 viste.
Cool nok. Men som du nok har oplevet er der en del brugere som bliver nærmest paniske hvis de går glip af 1 pt. :) erikjacobsen har jo desværre også forladt scenen... forståeligt nok desværre.
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.