webForumDet fria alternativet

SQL med undantag

9 svar · 292 visningar · startad av lillen_009

lillen_009Medlem sedan nov. 2002137 inlägg
#1

rörigt är bara början...
Ska försöka förklara. Har en tabell med alla användare (members). Unika numret är memberID...

Har en tabell med vänner (friends). Där finns två kolumner.
friends.memberID = anvädaren som lagt till sina kompisar
friends.friendID = användarens kompisar.

Både friend.memberID och friend.memberID kan relateras till members.memberID.

har provat med:
SQL ="SELECT * FROM members left join friends on friends.memberID= members.MemberID WHERE members.memberID =" & session("memberID") & " friends.friendID is null"

Vad jag vill är att visa alla medlemmar som _inte_ är hans/hennes kompisar

mattiasjarnhallMedlem sedan apr. 2001126 inlägg
#2

Detta bör fungera om din databas stöder nästlade SQLsatser

SELECT * FROM members WHERE memberID Not In (SELECT friendID FROM friends WHERE memberID = 'medlemmensNamn')

lillen_009Medlem sedan nov. 2002137 inlägg
#3

tyvärr gör den inte det. Har MySQL 4.0.xxx

mattiasjarnhallMedlem sedan apr. 2001126 inlägg
#4

Ajdå.. värre med det.. Du kan inte uppgradera till 4.1? Tror den skall stödja nästlade SQLsatser

lillen_009Medlem sedan nov. 2002137 inlägg
#5

jag kan, men webhotellet gör det inte...

Kan man inte göra om de till två frågor på något sätt?

lillen_009Medlem sedan nov. 2002137 inlägg
#6

Har knåpat lite till:

SQL ="SELECT * FROM members left join friends on friends.memberID = members.MemberID and friends.memberID = members.memberID WHERE friends.friendID is null"

fungerar till viss del, men den tar inte hänsyn till om det finns flera rader med samma memberID i Friends -> dvs, den utesluter bara det första och tar med resten

StevePMedlem sedan mars 2003772 inlägg
#7

Varför joinar du 2 gånger av samma?

friends.memberID = members.MemberID and friends.memberID = members.memberID
LarsGMedlem sedan dec. 200012 464 inlägg
#8
SELECT * FROM members left join friends 
on members.memberID = friendID 
and friends.memberid = <session("memberID")>
WHERE friendid is null
lillen_009Medlem sedan nov. 2002137 inlägg
#9

tack LarsG, det verkar fungera ungefär som jag vill. Ett litet sista problem... Jag vill inte att det memberid ska visas som den inloggade personen har. Det lagras i session("memberID") . Kan man sätta in :OO

" and not members.memberID=" & session("memberID")

eller något liknande någonstans i frågan? :q

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Det borde väl gå, dvs ungefärligen

sql =  _
" SELECT * FROM members left join friends " & _
" on members.memberID = friendID " & _
" and friends.memberid =  " & session("memberID") & _
" and not members.memberID=" & session("memberID") & _
" WHERE friendid is null
126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)