Avatar billede andersasp Nybegynder
22. juli 2004 - 12:23 Der er 10 kommentarer og
1 løsning

Vis kun records med relation til anden tabel!

Hejsa eksperter!

Lige som jeg troede jeg var ved at have styr på inner join, er jeg fuldstændig blank når det bliver lidt mere indviklet! Håber der er nogle der kan hjælpe!

Nedenstående kode viser en menu bestående af kategorier samt underliggende tekster hvilket virker helt perfekt. Jeg skal dog nu have den til kun at vise de data hvor der er relevans i en anden tabel.

Jeg har tabellen Categories med ID = KID - denne tabel skal have relevans i tabellen "Cmedlemmer" i feltet CPcatkey
KID = CPcatkey

Tabellen texts med ID = TID skal have relevans i tabellen "Tmedlemmer" i feletet CPcatkey
TID = CPcatkey

Min nuværende menu og sql ser således ud:

  <%
Set rs = Server.CreateObject("ADODB.Recordset")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open  MM_website_STRING
SQL = "SELECT Categories.KID, Categories.Kheadline, texts.Kkey, texts.Headline, texts.TID FROM Categories LEFT JOIN texts ON Categories.KID=texts.Kkey ORDER BY Categories.KID ASC"
Set rs = Conn.Execute(SQL)

lastID = ""
response.write "<table width=""100%"">"
colPrRow = 0
maxPrRow = 2
do while not rs.EOF
  if colPrRow = 0 then Response.write "<tr>"

  if lastID <> rs("KID") then
    Response.Write "<td valign=""top"">"
    response.write "<table width=""100%"">"
    response.write "<tr><td><b>" & "<a href='showcategory.asp?openID=" & rs("KID") & "'>" & rs("Kheadline") & "</a>" & "</b></td></tr>"
    lastID = rs("KID")
    colPrRow = colPrRow + 1
  end if

  response.write "<tr><td>&nbsp;" & "<a href='showundercategory.asp?textID=" & rs("TID") & "&OpenID=" & rs("Kkey") & "'>" & rs("Headline") & "</a>" &  "</td></tr>"
 
  rs.Movenext

  if not rs.EOF then
    if lastID <> rs("KID") then
      Response.Write "</table>"
      Response.Write "</td>"
    end if
  else
    Response.Write "</table>"
    Response.Write "</td>"
  end if

  if colPrRow = maxPrRow then
    colPrRow = 0
    response.write "</tr>"
  end if
loop
if colPrRow > 0 then response.write "</tr>"
response.write "</table>"
%>
Avatar billede hiks Nybegynder
22. juli 2004 - 14:42 #1
hej

Du skal vel have skiftet dit LEFT JOIN ud i din sql til en INNER JOIN.

/hiks
Avatar billede andersasp Nybegynder
22. juli 2004 - 14:46 #2
OK - min fejl :D! men det er mere hvordan jeg får sorteret dataerne således den kun viser de data med relevans til de tilknyttede tabeller!
Avatar billede hiks Nybegynder
22. juli 2004 - 14:51 #3
det forstår jeg ikke. Hvis du vil beholde dit OUTER JOIN får du jo altid noget information der hvor det er tilgængeligt fra de andre tabeller. Hvis du kun vil have de steder hvor der er relation mellem bruger du et INNER JOIN og det er ikke det du gør pt.

/hiks
Avatar billede hiks Nybegynder
22. juli 2004 - 14:53 #4
nååå nu tror jeg - jeg er med. Du vil gerne have joinet de sidste tabeller på?

/hiks
Avatar billede andersasp Nybegynder
22. juli 2004 - 15:20 #5
Ja! for den skal nemlig kun vise de data som også har data i de andre tabeller!  menuen virker som nu! men den viser som sagt alle data!
Avatar billede hiks Nybegynder
22. juli 2004 - 18:37 #6
den hedder vel noget i stil med dette:

"... FROM CMEDLEMMER INNER JOIN (CATEGORI LEFT JOIN (TEXTS INNER JOIN TMEDLEMMER ON TEXTS.TID = TMEDLEMMER.CPCATKEY) ON CATEGORIES.KID = TEXTS.KKEY) ON CMEDLEMMER.CPCATKEY = CATEGORI.KID ORDER BY Categories.KID ASC;"

Har ikke testet med det kan du jo prøve ;-)

/hiks
Avatar billede andersasp Nybegynder
25. juli 2004 - 12:30 #7
Tak for forslaget men det virker desværre ikke! jeg kom også i tanke om at hvis en text har en relation men den tilhørende kategori ikke har en relation vil denne text jo ikke blive vist!!  derfor skal der vel kun være en relation med texts og Tmedlemmer!!

Jeg har denne her som desværre kommer med fejl! kan du se hvad der går galt??

"SELECT Categories.KID, Categories.Kheadline, texts.Kkey, texts.Headline, texts.TID FROM Categories LEFT JOIN (texts inner join Tmedlemmer ON texts.TID = Tmedlemmer.CPcatkey) ON Categories.KID=texts.Kkey ORDER BY Categories.KID ASC"

fejlen er:  Join expression not supported.
Avatar billede andersasp Nybegynder
03. maj 2005 - 11:49 #8
Ok jeg vil til at lukke! hvis du vil have nogle points for hjælpen, må du lige smide et svar!!
Avatar billede andersasp Nybegynder
23. maj 2005 - 12:22 #9
Jeg vil til at lukke, hvis du vil have nogle points er det sidste chance :D
Avatar billede hiks Nybegynder
23. maj 2005 - 14:07 #10
ok - har ikke lige fulgt med i denne tråd. Du lukker den bare. Vi fik jo desværre ikke løst det helt. :s

/hiks
Avatar billede andersasp Nybegynder
23. maj 2005 - 14:24 #11
OK, tak - jeg får sikkert også brug for points!! har faktisk et spørgsmål her http://www.eksperten.dk/spm/619871 hvis du viste hvordan det skulle løses???

jeg henter noget data fra en cookie som fremkommer således: 1, 2, 3, 3 - men sådan henter den kun én record på 3 via sql.. hvilket også er rigtigt..  Jeg vil dog gerne have den til at udregne at der f.eks. er 2 stk "3" og så videre!!!
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