Jo, med en join (relationen i Access har ingen direkt betydelse)
SELECT f.[text],f.langd,r.namn FROM FILM f, REGI r WHERE f.regiid=r.Regiid
Då får du ut regissörens namn redan i första sökningen.
21 svar · 343 visningar · startad av erka
Hejsan, jag har inte tidigare gjort något sådant här och skulle bli glad om jag fick lite enkel vägledning
Jag har en databas med 2 tabeller FILM och REGI.
Films row
filmid = räknare
regiid = vilken regisörs id (har gjort en relation i acess)
text = recenscion av filmen
langd = langd av filmen
Regi Rows
Regiid = räknare
Namn = Regisörens namn
På första sidan
<%@ LANGUAGE=VBScript %>
<% dim art
Set Connection = Server.CreateObject("ADODB.Connection")
DataBas = "DBQ=" & Server.MapPath("film.mdb")
Set Database = Server.CreateObject("ADODB.Connection")
Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & Databas
SQLStmt = "SELECT * FROM FILM"
Set RS = Database.Execute(SQLStmt)
%>
<% Do until RS.EOF %>
<b><%=RS("text")%></b><br>
<%=RS("langd")%><br><br>
<% art = "SELECT * FROM REGI"
Set art= Database.Execute(art)
%>
<a href="regi.asp?id=<%=art("regiid")%>"><%=art("namn")%></a><br>
<%RS.MoveNext
Loop
RS.Close
%>
Hur gör jag för att han ska hämta regisörens namn till varje film han räknar upp. Går deti nte att göra på något annat sätt än att sätta en ny databaskoppling (art).
Sen har jag regi.asp
<%@ LANGUAGE=VBScript %>
<%
Set Connection = Server.CreateObject("ADODB.Connection")
DataBas = "DBQ=" & Server.MapPath("film.mdb")
Set Database = Server.CreateObject("ADODB.Connection")
Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & Databas
SQLStmt = "SELECT * FROM REGI WHERE Regiid = " & Request.Querystring("id") & ""
Set RS = Database.Execute(SQLStmt)
%>
<%=RS("namn")%>
Känner att detta är helt fel sätt, måste finnas något annat BÄTTRE sätt. Jag vill gärna ha lite tips, url tipps, vad jag gör som är så korkat
MYCKET TACKSAM.
Funderande erik
Jo, med en join (relationen i Access har ingen direkt betydelse)
SELECT f.[text],f.langd,r.namn FROM FILM f, REGI r WHERE f.regiid=r.Regiid
Då får du ut regissörens namn redan i första sökningen.
Hej jag skrev då här nu
<%@ LANGUAGE=VBScript %>
<% dim art
Set Connection = Server.CreateObject("ADODB.Connection")
DataBas = "DBQ=" & Server.MapPath("film.mdb")
Set Database = Server.CreateObject("ADODB.Connection")
Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & Databas
SQLStmt = "SELECT f.[text],f.langd,r.namn FROM FILM f, REGI r WHERE f.regiid=r.regiid"
Set RS = Database.Execute(SQLStmt)
%>
<% Do until RS.EOF %>
<b><%=RS("text")%></b><br>
<%=RS("langd")%><br><br>
<%=RS("regiid")%><br>
<%RS.MoveNext
Loop
RS.Close
%>
jag får felmedelandet
ADODB.Recordset fel '800a0cc1'
Objektet kunde inte hittas i mängden med det begärda namnet eller numret.
/filmer/default.asp, rad 16
det är alltså, <%=RS("regiid")%>, men i databasen så stämmer det. ?? Vad betyder egentligen f.[text] att man sätter [ klämmor på den men inte de andra ?
Du måste plocka ut alla kolumner du vill referera till.
SELECT f.[text],f.langd,f.regiid,r.namn FROM FILM f, REGI r WHERE f.regiid=r.Regiid
------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
du måste sätta klämmor runt alla fält som heter någonting 'olagligt', i detta fall kolumnen text. text är ett reserverat ord, därför klamrar runt.
även om man kan komma förbi 'reservationen' kan det vara bra att aldrig använda sig av reserverade ord.
en vän till mig (också wf:are) har som standard att alltid namnge allting med början "x_", så en kolumn med namnet text får namnet x_text.
det är en bra idé även om jag själv är för lat för att använda det ;)
------------------
<A HREF="http://www.cartman.nu" TARGET=_blank>
det man inte minns har inte hänt.
hit med en berka!</A>
Ja det funkade, tack så mycket för hjälpen. Nu för att lära mig har jag suttit och försökt rada upp alla filmer som regisören har gjort när man läser om honom på regi.asp. Men det vill sig inte, kommer inte underfund med hur jag ska skriva select sattsen. Om man nu kan skriva den så..
<%@ LANGUAGE=VBScript %>
<%
Set Connection = Server.CreateObject("ADODB.Connection")
DataBas = "DBQ=" & Server.MapPath("film.mdb")
Set Database = Server.CreateObject("ADODB.Connection")
Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & Databas
SQLStmt = "SELECT r.regiid, r.historia, r.fodd, r.namn FROM REGI r, FILM f WHERE r.regiid = " & Request.Querystring("id") & ""
Set RS = Database.Execute(SQLStmt)
%>
<b>Namn:</b><%=RS("namn")%><br>
<b>Född:</b><%=RS("fodd")%><br>
<b>Bakgrund:</b><%=RS("historia")%><br>
<% Do Until RS.EOF %>
<%=RS("text")%>
<%
RS.MoveNext
Loop
RS.Close
%>
Jag ska alltså Rada upp alla filmer (f.text) som har likadant f.regiid som r.regiid men jag lyckas inte skriva select sattsen. De ska ju skrivas ut som f.text oxå. Finns det några url som tar upp just det jag har problem med.
Om man inte frågar får man inge veta..om man inte läser får man inte heller veta...
tack för hjälpen hitills killar, ni är ju för trevliga..
SQLStmt = "SELECT r.regiid, r.historia, r.fodd, r.namn, f.[text], f.regiid FROM REGI r, FILM f WHERE r.regiid = " & Request.Querystring("id") & ""
plockar ju ut dem, men den tar med alla...hmmm
SQLStmt = "SELECT r.regiid, r.historia, r.fodd, r.namn, f.[text], f.regiid FROM REGI r, FILM f WHERE f.regiid = " & Request.Querystring("id") & " AND r.regiid"
var det som skulle med inte den som kom i inlägget innan, han skriver ju ut 2 av varje film...
SQLStmt = "SELECT r.regiid, r.historia, r.fodd, r.namn, f.[text], f.regiid FROM REGI r, FILM f WHERE f.regiid = " & Request.Querystring("id") & " AND r.regiid=f.regiid
TACK KILLAR!
prova:
SQLStmt = "SELECT DISTINCT r.regiid, r.historia, r.fodd, r.namn, f.[text], f.regiid FROM REGI r, FILM f WHERE f.regiid = " & Request.Querystring("id") & " AND f.regiid = r.regiid"
mvh
r ja så där ja! :) /r
------------------
<A HREF="http://www.cartman.nu" TARGET=_blank>
det man inte minns har inte hänt.
hit med en berka!</A>
[Redigerat av @nders den 06 sep 2000]
vad betyder distinct ?
att den inte hämtar poster där specificerade fält är lika.
har du två records som är exakt likadana i ditt recordset, kan du slänga på distinct så har du bara en av dem.
------------------
<A HREF="http://www.cartman.nu" TARGET=_blank>
det man inte minns har inte hänt.
hit med en berka!</A>
Tack så mycket. Nu har jag tänkt att lägga till skådisar också, ska jag göra en tabell för skådisar där jag ger dem vilka filmer de är med i genom att ha en row för filmid. Men om en skådis är med i flera filmer, måste jag då göra tex, 4 rows tex filmid1, filmid2 osv.
Detta blir ju skitkrånligt. Har du kanske någe smartare förslag..
Mvh.
Erka som just köpt SAMS SQL 3:e upplagan som skithus litteratur
Skapa en länktabell...
Tabell: actor
fält:
id, skadis, film
Sedan så lägger du bara in vilken skådis det är och vilken film... är det två filmer så skapar du bara en post till...
------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Har du gjort lumpen?
Om jag då har Edward Norton och ska ha med han american history x och fight club. Då skapar jag två poster med olika id och samma innehåll fast olika filmid.
FInns det inget smidagare sätt att tex. sätta in filmid på actor tabellen och ha tex information om de 2 filmer han är med i samma row ?
om jag ska ha massa info om skådisen, historia osv. då är det smartast att skapa en tilltabel med skådisens uppgifter eller hur ?
Hello,
ja det är bäst. Annars kommer databasen att växa väldigt mycket och samma information kommer att finnas på flera stället i tabellen, det är inte bra.
I tabellen med skådisar, skapa ett fält där du lägger in film id så att det ligger i databasen på detta vis:
1,23,76,
Du kan då hämta denna sträng och splita upp den till en array och sedan loopa igenom genom den och hämta film info,
Hade precis ett liknande "problem" med en databas som ska lagra kennlar och de kan ju föda upp flera olika raser,
Inlägget kan du hitta Här!
cya
PatrikB
------------------
=================================
** ZWGdesign **
=================================
grr
<%@ LANGUAGE=VBScript %>
<%
Set Connection = Server.CreateObject("ADODB.Connection")
DataBas = "DBQ=" & Server.MapPath("film.mdb")
Set Database = Server.CreateObject("ADODB.Connection")
Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & Databas
SQLStmt = "SELECT f.[text], f.filmid, f.regiid, f.langd, f.res, r.regiid, r.namn, s.id, s.skadisid, s.filmid FROM FILM f, REGI r, SKADIS s WHERE f.filmid = " & Request.Querystring("id") & " AND r.regiid=f.regiid AND f.filmid = s.filmid"
Set RS = Database.Execute(SQLStmt)
%>
<b><%=RS("text")%><br></b>
Längd:<%=RS("langd")%><br>
Rescension:<%=RS("res")%><br>
Regisör:<a href="regi.asp?id=<%=RS("regiid")%>"><%=RS("namn")%></a><br>
<br><br>
<% Do Until RS.EOF %>
<a href="skadis.asp?id=<%=RS("filmid")%>"><%=RS("skadisid")%></a><br>
<%
RS.MoveNext
Loop
RS.Close
%>
f.filmid, s.id samt r.regiid är räknare. Men ..
Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i uttryck.
då har ju jag glömt några fnuttar som vanligt...Men vilka..lyckas inte sätta in några bra fnuttar..allt verkar gå åt helvete..
sliter mig i håret..förbannade fnuttar...ingen som är fnuttmaster och vet en hel del om det..räknare ska inte ha ' tecken tror jag..men va fan..