webForumDet fria alternativet
Logga in / Bli medlem

Select med 2 tabeller

Databaser & SQL

14 svar · 213 visningar · startad av Gein

Medlem sedan sep. 20005 700 inlägg
Frågan#1

såhär ser min SQL sats ut som e tänkt att ta ut information från 2 tabeller

SQL = "SELECT d.namn, sum(r.totalt) FROM deltagare AS d, resultat AS r WHERE d.uid=r.uid GROUP BY d.namn"

men det funkar inte, om jag skriver SQL satsen i Access som en fråga, då får jag rätt svar, men i ASP så blir det felmeddelande:

Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.

tacksam om någon kunde hjälpa mej!

Medlem sedan dec. 200012 464 inlägg
#2

Problemet är inte din SQL-sats utan ditt anrop till ADO. Till exempel att du använder en konstant som adOpenDynamic utan att den är definierad. Kan du visa den koden?

Medlem sedan sep. 20005 700 inlägg
#3

ahaaa.. kom på.. jag hade glömt att inkludera adovbs.inc.
Får iofs ett annat felmeddelande nu:

Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

<tr><td><=%RecSet("d.namn")%></td><td><%=RecSet("r.restotalt")%></td></tr>
Medlem sedan sep. 20005 700 inlägg
#4

såg felet igen.. växlade % och =

nu verkar den ladda sidan men den suger ju typ upp allt minne.. och ingen sida visas

Medlem sedan juni 200032 967 inlägg
#5

Red.

Har du med en movenext?

Missar man den händer sådana saker...

Mvh,

[Redigerat av @nders den 13 jan 2002]

Medlem sedan dec. 200012 464 inlägg
#6

Då använder du ett kolumnnamn som inte finns med i resultatet. Om du vill komma åt summan med hjälp av ett namn så måste du ange den kolumnen.

SQL = "SELECT d.namn, sum(r.totalt) as restotatlt FROM deltagare AS d, resultat AS r WHERE d.uid=r.uid GROUP BY d.namn"
<tr><td><% =RecSet("namn")%></td><td><%=RecSet("restotalt")%></td></tr>
Medlem sedan sep. 20005 700 inlägg
#7

hmm, okej.. fel igen :D
Nu står det sådär att "Objektet kunde inte hittas i mängden med det begärda namnet eller numret." då den försöker skriva ut d.namn

Medlem sedan sep. 20005 700 inlägg
#8

jag kan ju lika gärna blotta koden.. så här ser det ut:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("stryksm.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT d.namn, sum(r.totalt) as restotalt FROM deltagare AS d, resultat AS r WHERE d.uid=r.uid GROUP BY d.namn"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
Do until RecSet.EOF
%>
<tr><td><%=RecSet("r.restotalt")%></td><td></td></tr>
<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
Set Connect = Nothing
%>

Felmeddelande:

Feltyp:
ADODB.Recordset (0x800A0CC1)
Objektet kunde inte hittas i mängden med det begärda namnet eller numret.
/stryktips/main.asp, line 18

Medlem sedan dec. 200012 464 inlägg
#9

Om du tar bort r. från namnet

<tr><td><%=RecSet("restotalt")%></td><td></td></tr>
Medlem sedan juni 200032 967 inlägg
#10
<%=RecSet("restotalt")%>

Du ska inte ange några tabellalias när du skriver ut fältvärden.

Mvh,

Medlem sedan sep. 20005 700 inlägg
#11

wunderbar!
*bugar och bockar*

Medlem sedan sep. 20005 700 inlägg
#12

försökte lägga till ett fält i select satsen. SELECT d.uid, d.namn ...
men då får jag detta felmeddelande:

[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'uid'.

Medlem sedan juni 200032 967 inlägg
#13

Du måste ha med d.uid i din GROUP BY-instruktion om du har beräkningsfunktioner (SUM exempelvis) i din SQL-fråga.

Mvh,

Medlem sedan sep. 20005 700 inlägg
#14

kommer att göra en ny sql sats med flera tabeller.. men där kommer vissa fält att ha samma namn. Hur löses detta?
om jag skriver t.ex <%=RecSet("m1")%> hur vet den då ur vilken tabell att hämta värdet?

Medlem sedan juni 200032 967 inlägg
#15

Du får ge de fälten alias.

strsSQL = "SELECT a.Falt1 AS Falt1FromA, b.Falt1 AS Falt1FromB FROM TabellA AS A, TabellB AS B"

Sedan:

Response.write objRS("Falt1FromA")

Mvh,

261 ms totalt · 4 externa anrop · v20260731065814-full.05830320
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)