nillMedlem sedan okt. 2001387 inlägg
Jag tycks inte kunna lära mig det här med JOIN och sådant som hör till det så jag behöver hjälp igen.
Jag har en tabell, users. Den innehåller två kolumner ID och nick.
En annan tabell heter relationer och har två kolumner, person1 och person2.
I relationer lagras användernas (users) relationer. Alltså om en användare med ID = 1 känner en användare med ID = 4 så ser relationer-tabellen ut så här
person1 person2
1 4
eller
person1 person2
4 1
min nuvarande kod ser ut så här. Men den är inte så bra eftersom användarnas namn inte kommer bokstavsordning.
VarDammit = "SELECT relationer.person2, users.nick FROM relationer LEFT JOIN users ON relationer.person2 = users.ID WHERE relationer.person1 = " & Session("userID")
RecSet.Open VarDammit, Connect, 3, 3
Do Until RecSet.EOF
Response.Write "\<OPTION VALUE=""" & RecSet("person2") & """\>" & RecSet("nick")
RecSet.MoveNext
Loop
RecSet.Close
VarDammit = "SELECT relationer.person1, users.nick FROM relationer LEFT JOIN users ON relationer.person1 = users.ID WHERE relationer.person2 = " & Session("userID")
RecSet.Open VarDammit, Connect, 3, 3
Do Until RecSet.EOF
Response.Write "\<OPTION VALUE=""" & RecSet("person1") & """\>" & RecSet("nick")
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
%\>
LarsGMedlem sedan dec. 200012 465 inlägg
q = "SELECT u1.nick as jag , u2.nick as kompis " & _
"FROM (users u1 inner JOIN relationer r on u1.id = r.person1) " & _
"inner join users u2 on r.person2 = u2.id " & _
"WHERE u1.id = " & Session("userID") & " " & _
"union SELECT u2.nick as jag , u1.nick as kompis " & _
"FROM (users u1 inner JOIN relationer r on u1.id = r.person1) " & _
"inner join users u2 on r.person2 = u2.id " & _
"WHERE u2.id = " & Session("userID") & " " & _
"order by 2"
är kanske den fråga du vill ha.
nillMedlem sedan okt. 2001387 inlägg
det verkar vara mycket bättre kod, tack. Då den är lite väl komplex för mig (förstår ingenting) förstår jag inte hur jag ändrar den så den passar mig exakt.
"Kompisarnas" nick skriver jag ju ut med RecSet("kompis").. så mycket förstår jag. RecSet("jag") behöver jag inte. Men däremot behöver jag "kompisarnas" ID, inte bara deras nick.
Hur gör jag det?
LarsGMedlem sedan dec. 200012 465 inlägg
q = "SELECT u2.id , u2.nick as kompis " & _
"FROM (users u1 inner JOIN relationer r on u1.id = r.person1) " & _
"inner join users u2 on r.person2 = u2.id " & _
"WHERE u1.id = " & Session("userID") & " " & _
"union SELECT u1.id, u1.nick as kompis " & _
"FROM (users u1 inner JOIN relationer r on u1.id = r.person1) " & _
"inner join users u2 on r.person2 = u2.id " & _
"WHERE u2.id = " & Session("userID") & " " & _
"order by 2"
Lite förklaring av frågan: Union innebär att man slår ihop resultatet av två frågor till ett. Den första frågan tar fram de personer som Session("userID") har som kompis och den andra tar fram de som har Session("userID") som kompis.
Då detta inte är relaterat till ASP så flyttar jag frågan till SQL
nillMedlem sedan okt. 2001387 inlägg
Hur ser ovanstående kod ut i mySQL?
nillMedlem sedan okt. 2001387 inlägg
UNION verkar ju inte fungera i mySQL < 4 så fick lösa det med att addera två arrayer.
Stötte på ett annat problem.
Har även en kolumn i tabellen users som heter 'gang'. Den har ett idnummer till en annan tabell som heter gang. Skulle vilja ha gangnamn och gangid från varje "kompis" också.
LarsGMedlem sedan dec. 200012 465 inlägg
q = "SELECT u2.id , u2.nick as kompis , gang.gangnamn, gang.gangid " & _
"FROM users u1 inner JOIN relationer r " & _
" on u1.id = r.person1 " & _
" inner join users u2 on r.person2 = u2.id " & _
" inner join gang on u2.gang = gang.gangid " & _
"WHERE u1.id = " & Session("userID") & "
nillMedlem sedan okt. 2001387 inlägg
Skulle vilja slippa detta med att addera två arrayer nu. Hur kan jag göra union-frågan med ovanstående "gang"-funktion också i MySQL < 4 ?