webForumDet fria alternativet

Lista datat i rätt ordning igen...

ASP

6 svar · 246 visningar · startad av solbulle

Medlem sedan mars 20015 287 inlägg
Frågan#1

Hur får jag ut detta så att det blir listat per genre?

Typ:

Genre 1 (= fld_g_title)
film 1 (= fld_mt_name)
film 2
Genre 2
film 3
film 4

osv

Obs att denna har bra många likheter med denna http://www.webforum.nu/showthread.php?s=&threadid=44031 tråd, men inte har det hjälpt mig...
SQL-fråga:

SQL = "SELECT fld_g_title, fld_mt_name, fld_mt_id FROM " &_
" (tbl_movie_title mt inner join tbl_movie m " &_
"on mt.fld_mt_id = m.fld_m_mtid) " &_
" left outer join " &_
"tbl_genre g on g.fld_g_id = m.fld_g_id ORDER BY fld_g_title, fld_mt_name"
Medlem sedan mars 20015 287 inlägg
#2
while not rs.eof

  if  pgenre <> rs("fld_g_title") then
      pgenre = rs("fld_g_title")
      response.write "<font color='RED'>" & pgenre & "</font><br>"
  end if

If  rs("fld_g_title") <> "" then
	response.write rs("fld_mt_name") & "<br>"
End If

  rs.movenext
wend

Ger mig alla efter dess genre, men sen skulle jag vilja ha dom utan genre längst ner...

Medlem sedan dec. 200012 464 inlägg
#3

Om du har denna order by så får du det filmer som har null i kolumnen fld_g_title sist i resultatet

ORDER BY iif(fld_g_title is null,1,0), fld_g_title,fld_mt_name

(Koden är specifik för Access.)

Jag vet inte exakt hur du vill ha det för dom som saknar genretillhörighet men du kan lägga till en kontroll i utskriften

if isnull(rs("fld_g_title")) then
' filmen tillhör ingen genre
end if
Medlem sedan mars 20015 287 inlägg
#4

Hm, jag prövade något liknande:
if rs("fld_g_title") <> "" then
men det fungerade inte.
Ordningen blev helt ok nu, Men!
Jag har denna kod nu:

SQL = "SELECT fld_g_title, fld_mt_name, fld_mt_id FROM " &_
" (tbl_movie_title mt inner join tbl_movie m " &_
"on mt.fld_mt_id = m.fld_m_mtid) " &_
" left outer join " &_
"tbl_genre g on g.fld_g_id = m.fld_g_id ORDER BY iif(fld_g_title is null,1,0), fld_g_title,fld_mt_name "

DB_koppling

set rs = connect.execute(sql)

while not rs.eof

  if  pgenre <> rs("fld_g_title") then
      pgenre = rs("fld_g_title")
      response.write "<font color='RED'>" & pgenre & "</font><br>"
  end if

If  rs("fld_g_title") <> "" then
	response.write rs("fld_mt_name") & "<br>"
End If

 rs.movenext
wend

	response.write "<p>"

rs.movefirst

while not rs.eof

if isnull(rs("fld_g_title")) then
' filmen tillhör ingen genre
  if  pfilmtitel <> rs("fld_mt_name") then
      pfilmtitel = rs("fld_mt_name")
	response.write pfilmtitel  & "<br>"
  end if
end if

  rs.movenext
wend

Det hela faller på, tror jag, att eftersom jag loopar igenom mitt rs och har så att säga dubletter av flera titlar så är inte alltid rs("fld_g_title") null, så en titel som egentligen tillhör en genre blir listad...
Hm, hur löser jag detta?

Medlem sedan mars 20015 287 inlägg
#5

Det bara kan inte vara så svårt.
Hur listar jag efter att jag nu fått ut alla poster med en genre (koppling i databasen) alla som inte har någon koppling.
-Har funderat på att lägga de med koppling/genre i en array samtidigt som jag listar upp dom för att sen jämföra o lista ut alla som inte finns i den arrayen.
Detta känns som en omväg samt att jag inte vet hur jag ska klara av det heller.
Någon med lite tips kanske?

Medlem sedan mars 20015 287 inlägg
#6

Nu fungerar det nästan, en post missas ibland(?) i den övre listningen, eller att det blir fel genre, varför?

SQL = "SELECT fld_g_title, fld_mt_name, fld_mt_id FROM " &_
" (tbl_movie_title mt inner join tbl_movie m " &_
"on mt.fld_mt_id = m.fld_m_mtid) " &_
" left outer join " &_
"tbl_genre g on g.fld_g_id = m.fld_g_id ORDER BY iif(fld_g_title is null,1,0), fld_g_title,fld_mt_name "

DB_koppling

set rs = connect.execute(sql)

pgenre = ""

while not rs.eof
pmt_name = ""
'response.write rs("fld_mt_name") & "<p>"

If not isnull(rs("fld_g_title")) then

	if  pgenre <> rs("fld_g_title") then
		pgenre = rs("fld_g_title")
		pgenrearr = rs("fld_mt_id") & "," & pgenrearr
      	response.write "<font color='RED'>" & pgenre & "</font><br>"
  	End If

	If  rs("fld_g_title") <> "" then
		pgenrearr = rs("fld_mt_id") & "," & pgenrearr
			response.write rs("fld_mt_name") & "<br>"
	End If
End If

 rs.movenext
wend

	response.write "<p>"

rs.movefirst

pgenrearray = split(pgenrearr,",") 

while not rs.eof

shit = "no"

For i = 0 To Ubound(pgenrearray)
  If cstr(rs("fld_mt_id")) = pgenrearray(i) Then
	'Shit, skriv inte ut.
	shit = "yes"
  End If
Next

If shit = "no" then
  if  pmt_name <> rs("fld_mt_name") then
      pmt_name= rs("fld_mt_name")
      response.write "<font color='BLUE'>" & pmt_name & "</font><br>"
  End If
End If

  rs.movenext
wend

	DB_close
End If
Medlem sedan mars 20015 287 inlägg
#7

Njo, det verkar fungera nu i alla fall. Vet inte riktigt om det var webläsaren, cachen, som spökade eller kanske databasen som inte ville vara med i svängarna.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)