webForumDet fria alternativet

Select med 2 tabeller

14 svar · 213 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#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!

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

LarsGMedlem 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?

------------------
essentitia preter non sans multiplicandum

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

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

puzzeMedlem 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

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

@ndersMedlem sedan juni 200032 969 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]

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

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 jan 2002]

puzzeMedlem 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

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

puzzeMedlem 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

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Om du tar bort r. från namnet

<tr><td><%=RecSet("restotalt")%></td><td></td></tr>

------------------
essentitia preter non sans multiplicandum

@ndersMedlem sedan juni 200032 969 inlägg
#10
<%=RecSet("restotalt")%>

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

Mvh,

puzzeMedlem sedan sep. 20005 700 inlägg
#11

wunderbar!
*bugar och bockar*

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

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

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

@ndersMedlem sedan juni 200032 969 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,

puzzeMedlem 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?

------------------
"When there's no more room in hell,
the dead will walk the earth."
---------------------
http://shortenings.cjb.net

@ndersMedlem sedan juni 200032 969 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,

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)