Avatar billede bbe1379 Nybegynder
06. februar 2003 - 00:23 Der er 5 kommentarer og
3 løsninger

Distinct med Join

Hvem kan fortælle mig hvorfor min DISTINCT på denne forespørgsel ikke virker:

sql =     "SELECT DISTINCT page.menuFKey TOP 5 " & _
    "page.pageIDX, " & _
    "page.menuFKey, " & _
    "menu.menu, " & _
    "menu.menuIDX, " & _
    "txt.txtIDX, " & _
    "txt.txt " & _
    "FROM (page " & _
    "INNER JOIN txt ON page.txtFKey = txt.txtIDX) " & _
    "INNER JOIN menu ON page.menuFKey = menu.menuIDX " & _
    "Where (txt LIKE '%" & query & "%')"

Fejlen er:

Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "(page.pageIDX) top 5 page.pageIDX".

Jeg har prøvet at flytte DISTINCT'en mellem flere forskellige placeringer uden held, så ovenstående skal bare vise den øvrige syntaks.

Bitte hilfe!!
Avatar billede eagleeye Praktikant
06. februar 2003 - 00:28 #1
Prøv at flytte TOP 5 efet DISTINCT:


sql =    "SELECT DISTINCT TOP 5 page.menuFKey, " & _
    "page.pageIDX, " & _
    "page.menuFKey, " & _
    "menu.menu, " & _
    "menu.menuIDX, " & _
    "txt.txtIDX, " & _
    "txt.txt " & _
    "FROM (page " & _
    "INNER JOIN txt ON page.txtFKey = txt.txtIDX) " & _
    "INNER JOIN menu ON page.menuFKey = menu.menuIDX " & _
    "Where (txt LIKE '%" & query & "%')"
Avatar billede sthen Nybegynder
06. februar 2003 - 00:58 #2
Jeg ved ikke om DISTINCT er en lovlig parameter i SQL i forbindelse med JOIN.
I MySql kan man da IKKE anvende denne kombination. Havde selv engang et lignende problem med MySql, JOIN og DISTINCT, som jeg fik løst således:

http://www.eksperten.dk/spm/214978

Håber at du kan anvende dette i forbindelse med SQL
Avatar billede sthen Nybegynder
06. februar 2003 - 01:03 #3
Og rent faktisk kom min SELECT til slut tilat se således ud:

$res = mysql_query("SELECT forumsporgsmaal.*,max(forumsvar.tid) as MaxTid FROM forumsporgsmaal,forumsvar WHERE forumsporgsmaal.id=forumsvar.spm GROUP BY forumsporgsmaal.id ORDER BY MaxTid DESC LIMIT 0,5");
Avatar billede bbe1379 Nybegynder
06. februar 2003 - 01:07 #4
eagleeye > SQL kører fint igennem, men der bliver ikke lavet nogen DISTINCT. menuFKey optræder flere gange.

sthen > prøv at forklare din sql lidt. Hvad gør "LIMIT 0,5")"?
Avatar billede nozio Nybegynder
06. februar 2003 - 07:50 #5
Du skal huske på - at DISTINCT er på alle felterne tilsammen:

page.menuFKey, page.pageIDX, page.menuFKey, menu.menu, menu.menuIDX, txt.txtIDX, txt.txt

- og IKKE kun page.menuFKey
Avatar billede hossein Nybegynder
06. februar 2003 - 14:03 #6
Prøv dig frem med dette, og tilpas den til dine tabeler
strsql = "SELECT DISTINCT tbl1.Felt_ID, tbl2.Felt_emne, " & _
        "(SELECT TOP 5 tbl1.Felt_dato " & _
          "FROM tbl1 " & _
          "WHERE tbl1.Felt_ID = tbl2.Felt_ID) AS Felt_dato, " & _
        "(SELECT TOP 5 tbl1.User " & _
        "FROM tbl1 " & _
        "WHERE tbl1.Felt_ID = tbl2.Felt_ID) AS User " & _
      "FROM tbl2 INNER JOIN tbl1 on tbl2.Felt_ID = tbl1.Felt_ID"
Avatar billede bbe1379 Nybegynder
09. februar 2003 - 11:23 #7
hossein >...hmmm, det ser lovende ud, men jeg er ikke sikker på at jeg kan gennemskue det.

Prøv at forklare hvad det er du gør.

nozio > det ved jeg, men heg ved ikke hvordan jeg kan skille det ad, så den kun laver på "page.menuFKey"
Avatar billede bbe1379 Nybegynder
24. april 2003 - 14:03 #8
Jeg fandt en anden løsning
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
Kurser inden for grundlæggende programmering

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