webForumDet fria alternativet

SQL med undantag

Databaser & SQL

9 svar · 294 visningar · startad av lillen_009

Medlem sedan nov. 2002137 inlägg
Frågan#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

Medlem 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')

Medlem sedan nov. 2002137 inlägg
#3

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

Medlem 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

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

Medlem 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

Medlem sedan mars 2003772 inlägg
#7

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

friends.memberID = members.MemberID and friends.memberID = members.memberID
Medlem 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
Medlem 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

Medlem 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
264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)