webForumDet fria alternativet

Data från 2 tabeller

ASP

21 svar · 343 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

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

Medlem sedan dec. 19996 721 inlägg
#2

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.

Medlem sedan dec. 19996 522 inlägg
#3

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 ?

Medlem sedan dec. 19996 721 inlägg
#4

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

Medlem sedan juni 200032 967 inlägg
#5

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>

Medlem sedan dec. 19996 522 inlägg
#6

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..

Medlem sedan dec. 19996 522 inlägg
#7
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

Medlem sedan dec. 19996 522 inlägg
#8
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...

Medlem sedan dec. 19996 522 inlägg
#9
	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!

Medlem sedan juni 200032 967 inlägg
#10

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]

Medlem sedan dec. 19996 522 inlägg
#11

vad betyder distinct ?

Medlem sedan juni 200032 967 inlägg
#12

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>

Medlem sedan dec. 19996 522 inlägg
#13

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

Medlem sedan dec. 19998 577 inlägg
#14

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?

Medlem sedan dec. 19996 522 inlägg
#15

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 ?

Medlem sedan dec. 19996 522 inlägg
#16

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 ?

Medlem sedan mars 20002 836 inlägg
#17

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 **
=================================

Medlem sedan dec. 19996 522 inlägg
#18

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..

Medlem sedan dec. 19996 522 inlägg
#19

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..

Medlem sedan dec. 19996 721 inlägg
#20

Så länge

f.filmid
regiid
f.regiid
s.filmid

är antingen "tal" eller "räknare" ska det gå bra.

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)