PoseidonMedlem sedan jan. 200370 inlägg
Tjena alla glada.
nu har jag lite problem. allt fungerar som det ska ända tills jag villa
loopa från tabellen ForumLista då får jag fel.
fältet är rätt angivet om jag inte loopar men när jag loopar hittar den
ej fältet längre.. why?
nu vill jag då loopa fram från den andra tabellen men får inte..
hur ska det se ut? har provet med: 'Do Until objRS("ForumLista").Eof'
men ingen av mina försöka har lyckats... den säger att den inte hittar fältet vilket
garanterat finns då jag kan hämta enstaka men ej loopa med RecordSet.
Kod:
--------------------------------------------------------------------------------
strSQL = "Select UserInfo.*, ForumLista.ForumID As ForumID From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID
Do Until objRS.Eof
Response.Write( "<option value='8'>Forum "& objRS("ForumID") &"</option>")
objRS.MoveNext : Loop
--------------------------------------------------------------------------------
Tacksam för hjälp!
/Markus
aasahMedlem sedan mars 20033 451 inlägg
Vad är objRS? Ligger inte problemet i koden för utskrift från ditt applikationsprogram då? Vad händer om du helt enkelt skriver ut din resultattabell, blir det inte rätt då?
PoseidonMedlem sedan jan. 200370 inlägg
förstår inte alls hur du menar.
objRS är mitt RecordSet som jag vill ska loopa från tabellen ForumLista medans den ska hämta specifik post från UserInfo..
det fungerar jättebra om jag inte försöker loopa, min fråga är:
Hur ska det se ut om jag loopar i från tabellen "ForumLista"??
Är det ingen som har kunskapen att lösa denna fråga??
@ndersMedlem sedan juni 200026 914 inlägg
Borde du inte joina ihop tabellerna också?
strSQL = "Select UserInfo.*, ForumLista.ForumID As ForumID From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID & " [b]AND Forumlista.någotfält = UserInfo.någotfält[/b]"
[b]'öppna recordset[/b]
Set objRS = objConn.Execute(strSQL)
Do Until objRS.Eof
Response.Write( "<option value='8'>Forum "& objRS("ForumID") &"</option>")
objRS.MoveNext : Loop
Vad får du för felmeddelande när du kör koden?
Mvh
PoseidonMedlem sedan jan. 200370 inlägg
nope, har ingen nytta av att joina dem...
här kommer all kod om någon lyckas lösa det...
vill ha endast en SQL-sats!
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.Oledb.4.0; Data Source ="& Server.Mappath("db/db.mdb")
strSQL = "Select UserInfo.*, ForumLista.ForumID As ForumID From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID
Set objRS = objConn.Execute(strSQL)
Response.Write( "<table cellpadding='0' cellspacing='0'><tr>"&_
"<td valign='top' class='user1'><b>nick:</b></td>"&_
"<td valign='top' class='user2'>"& objRS("username") &"</td>"&_
"<td valign='top' class='user1' style='padding-left:10px;'><b>status:</b></td>"&_
"<td valign='top' class='user2'>"&_
" <select name='status'>"&_
" <option value='Forumledare'>Forumledare</option>"&_
" <option value='Moderator'>Moderator</option>"&_
" <option value='User'>User</option/>"&_
" </select>"&_
" <select name='forum'>")
Do Until objRS("ForumLista").Eof
Response.Write( "<option value='"& objRS("ForumId") &"'>Forum "& objRS("ForumID") &"</option>")
objRS.MoveNext : Loop
det finns mycket mer kod men det räcker med detta.. ;)
har också provat utan 'objRS("ForumLista").Eof...
PoseidonMedlem sedan jan. 200370 inlägg
lite tydligare..
jag skriver lite tydligare här..
Jav vill loopa från en tabell men hämta enbart en post från den andra tabellen.....
@ndersMedlem sedan juni 200026 914 inlägg
Vad innehåller tabellerna? Du måste nog köra två SQL-frågor. Du kommer att få en herrans massa poster eftersom SQL-frågan kommer returnera alla olika unika kombinationer.
Du får nog tänka om.
(Det verkar inte vara en post du vill hämta, utan ett fält. Ställ gärna frågan direkt i Access-programmet, så ser du vilket härke till resultat du får tillbaka.)
Mvh
aasahMedlem sedan mars 20033 451 inlägg
Alltså, jag förstår fortfarande inte vad du vill.
Jav vill loopa från en tabell men hämta enbart en post från den andra tabellen.....
På vilket sätt är den ensamma posten relaterad till den tabell du loopar? Och exakt vad är det egentligen som loopar? objRS är ingenting som ingår i SQL, väl? Så vilket programspråk/script använder du för att prata med databasen? Jag kan inte avgöra det på de rader du postat här.
PoseidonMedlem sedan jan. 200370 inlägg
SQL för att snacka med databasen.. objRS (recordset) i ASP för att visa informationen för användaren...
databaserna är ej relaterade i detta fallet.. vad jag undrade vad om man på något sätt kunde skriva ut specifik post från en tabell och loopa ett fält från en annan tabell??
tydligen går det ej då...
har då en annan fråga....
strSQL = "Select UserInfo.*, Max(ForumLista.ForumID) As ForumID From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID
fel:
Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'UserId'.
förstår felet, men finns det inget sätt jag kan göra på så att jag
slipper ha två SQL-satser??
det enda jag vill ha från tabell2 dvs. ForumLista är hur många
ID det finns.. har också provat med Count..
annars får jag köra med 2sql satser....
aasahMedlem sedan mars 20033 451 inlägg
Poseidon skrev:
SQL för att snacka med databasen.. objRS (recordset) i ASP för att visa informationen för användaren...
strSQL = "Select UserInfo.*, Max(ForumLista.ForumID) As ForumID
From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID
...det enda jag vill ha från tabell2 dvs. ForumLista är hur många
ID det finns.. har också provat med Count..
Första frågan: ASP förklarar saken, jag vet inget om ASP.
Andra frågan:
Det du gör nu är att gå en oerhörd omväg. Först parar du ihop all info för varje rad i UserInfo med varje rad i ForumId. Om du har m medlemmar som matchar userID och f forum hämtar du alltså infon från m*f rader. Varför? Jo för att få reda på max forumID vilket kräver genomgång av endast f poster och utskrift av alla medlemmar vilket är en genomgång av m poster. Egentlig tidsåtgång m + f << m*f . Använd två frågor i stället.
PoseidonMedlem sedan jan. 200370 inlägg
löste det nu och koden ser ut såhär...
strSQL = "Select UserInfo.*, ForumLista.ForumID As ForumID
From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID &" Order By ForumLista.ForumId Desc"
jag trodde att den hämtade alla fälten i tabellen UserId där qID stämde.
och att den hämtar allt från fältet ForumId från tabellen ForumLista och sorterar den efter högsta värdet...
kan du förklara en gång till utifrån den koden jag visade nu vad som är onödigt med koden???
PoseidonMedlem sedan jan. 200370 inlägg
nu får jag fram alla idna
For i = 1 To objRS("ForumId")
Response.Write( "<option value='"& i &"'>Forum "& i &"</option>")
Next
aasahMedlem sedan mars 20033 451 inlägg
Poseidon skrev:
jag trodde att den hämtade alla fälten i tabellen UserId där qID stämde.
Detta är riktigt, jag skrev fel ovan ska omedelbart ändra efter detta svar.
Poseidon skrev:
löste det nu och koden ser ut såhär...
strSQL = "Select UserInfo.*, ForumLista.ForumID As ForumID
From UserInfo, ForumLista "&_
"Where UserInfo.UserID ="& qID &"
Order By ForumLista.ForumId Desc"
...och att den hämtar allt från fältet ForumId från tabellen ForumLista och sorterar den efter högsta värdet... kan du förklara en gång till utifrån den koden jag visade nu vad som är onödigt med koden???
Om UserInfo.userID är unikt så kommer ditt resultat inte att generera fler rader eftersom m*f = 1*f = f. Om det inte är unikt så får du ut samma info om och om igen i olika konstellationer mot foruminfon. Din ändrade fråga tar inte ut maxvärdet på forumID, den skriver ut alla ForumID. Låt oss anta att userID är unikt. Exempel:
UserInfo
userID | namn | epost
1 | Bo Berg | bo@telia.se
2| Ia Nord | ia@bo.se
ForumLista
ForumID | namn | senaste postare | antal inlägg | datum för senaste inlägg
1 | Film | 1 | 20030219
2 | TV | 1 | 20030319
3 | Såpor | 1 | 20030419
4 | Teater | 2 | 20030501
Ia Nord har inte postat någon annanstans än i Teaterforumet. Det userId du får in är 2, dvs Ias. Den info din sats skriver ut är följande:
2| Ia Nord | ia@bo.se | 1 | Film | 1 | 20030219
2| Ia Nord | ia@bo.se | 2 | TV | 1 | 20030319
2| Ia Nord | ia@bo.se | 3 | Såpor | 1 | 20030419
2| Ia Nord | ia@bo.se | 4 | Teater | 2 | 20030501
eftersom det inte finns någon koppling mellan UserInfo och ForumLista.
Då kan man fråga sig två saker: Dels varför du vill ha ut Ias info fyra gånger när det räcker med en? Dels varför det är intressant att koppla ihop Ias info med de tre forum som hon inte har postat i?
PoseidonMedlem sedan jan. 200370 inlägg
anledning till det är att jag vill endast ha en SQL-sats.. och att
jag inte visste om att jag hämtade onödigt med information..
så det finns inget sätt där jag kan köra en SQL-sats men slippa
hämta den överflödiga informationen??
hur mycket mer kräver det av servern?? när det bara rör sig om
4 ForumId kan det väl inte ha någon större betydelse??
aasahMedlem sedan mars 20033 451 inlägg
Poseidon skrev:
-
så det finns inget sätt där jag kan köra en SQL-sats men slippa hämta den överflödiga informationen??
-
hur mycket mer kräver det av servern?? när det bara rör sig om
4 ForumId kan det väl inte ha någon större betydelse??
- Nej.
- Hur många forumID det rör sig om beror ju på hur många forum DU har. I mitt exempel var det 4, du kanske har > 10. På webForum skulle det bli rätt många... Förmodligen har det ingen större betydelse, men din fråga blir ologisk och det blir svårt för någon annan att fatta varför du gör som du gör... VARFÖR slå ihop dem? Frågorna har ju inget med varann att göra?
PoseidonMedlem sedan jan. 200370 inlägg
varför ha fler frågor än nödvändigt?? =)
förstår vad du menar, men eftersom det ligger mitt i en annan så
måste jag öppna två recordset och det är det jag vill komma från.
jag får göra lite mätningar och se hur mycket det drar ner i tid..
tackar för hjälpen..