Avatar billede eksperten1 Nybegynder
21. november 2002 - 12:08 Der 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.

Kan det virkelig ikke lade sig gøre ?
mvh
Mark
Avatar billede loss Nybegynder
21. november 2002 - 12:10 #1
DISTINCT(ID, CATEGORYID) ? aner ikke om det virker men prøv :)
Avatar billede eksperten1 Nybegynder
21. november 2002 - 12:23 #2
Desværre ! Det returnerer en fejl i DISTINCT.
Avatar billede erikjacobsen Ekspert
21. november 2002 - 12:26 #3
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?
Avatar billede erikjacobsen Ekspert
21. november 2002 - 12:27 #4
"samme artikel ELLER den samme kategory" skriver du jo - men det kan du
ikke i én SQL-sætning
Avatar billede flse Nybegynder
21. november 2002 - 12:56 #5
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)
Avatar billede eksperten1 Nybegynder
21. november 2002 - 13:18 #6
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

Jeg takker for jeres kommentarer.

mvh
Mark
Avatar billede erikjacobsen Ekspert
21. november 2002 - 13:22 #7
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.
Avatar billede eksperten1 Nybegynder
21. november 2002 - 13:25 #8
Se det var faktisk en rigtig god idé.!

Smider du et svar ?

vh
Mark
Avatar billede erikjacobsen Ekspert
21. november 2002 - 13:27 #9
flse var inde på noget af det samme :)
Avatar billede eksperten1 Nybegynder
05. december 2002 - 10:54 #10
du har ret...

flse -> vil du være med, smid et svar:)
Avatar billede flse Nybegynder
06. december 2002 - 07:14 #11
Overlever såmænd nok uden de point ... har endnu ik' fundet et sted, hvor jeg kan købe morgenbrød for mine point :-)

Iøvrigt har jeg "skiftet" navn til fsconsult.dk ..  (så point'ene ryger ud af vinduet alligevel...)
Avatar billede eksperten1 Nybegynder
06. december 2002 - 10:03 #12
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.

Rigtig god jul.
mvh
Mark
Avatar billede flse Nybegynder
06. december 2002 - 14:50 #13
Hej Mark,

Ja, jeg ved godt at mange går mere op i at score point og belære folk, fremfor at hjælpe hinanden, men det er jo i bund og grund deres problem.

Jeg vidste ikke at erikjacobsen havde forladt scenen. Sørgeligt, for han var bestemt også flink til at give gode og sobre råd.

Go' jul selv!
Flemming
Avatar billede eksperten1 Nybegynder
06. december 2002 - 17:27 #14
elvis has left the building ;)

Tak!
Mark
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester