sql >> Databasteknik >  >> RDS >> Mysql

Friendship System SQL-struktur och fråga

Använd:

SELECT f.friend_id
  FROM FRIENDS f
 WHERE f.user_id = $user_id
UNION
SELECT t.user_id
  FROM FRIENDS t
 WHERE t.friend_id = $user_id

Använder UNION kommer att ta bort dubbletter. UNION ALL skulle vara snabbare, men det tar inte bort dubbletter.

Om du vill få information om dina vänner från MEMBERS tabell, använd:

SELECT m.*
  FROM MEMBERS m
  JOIN (SELECT f.friend_id 'user_id'
          FROM FRIENDS f
         WHERE f.user_id = $user_id
        UNION
        SELECT t.user_id
          FROM FRIENDS t
         WHERE t.friend_id = $user_id) x ON x.user_id = m.id

BTW:Jag hoppas att du använder mysql_escape_string på variablerna, annars riskerar du SQL-injektionsattacker:



  1. Hur infogar man NULL-värde från PHP-variabel till MySQL, och håller sig borta från SQL-injektion?

  2. När ett skript körs på SQLPlus skrivs det ut en sekvens av nummer istället för utdata

  3. Python:fördelar och nackdelar med _mysql vs MySQLdb?

  4. Python db-api:fetchone vs fetchmany vs fetchall