sql >> Database teknologi >  >> RDS >> Mysql

Venskabssystem SQL-struktur og forespørgsel

Brug:

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

Brug af UNION vil fjerne dubletter. UNION ALL ville være hurtigere, men det fjerner ikke dubletter.

Hvis du ønsker at få oplysninger om vennerne fra MEMBERS tabel, brug:

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:Jeg håber, du bruger mysql_escape_string på variablerne, ellers risikerer du SQL-injektionsangreb:



  1. Tag værdi fra felt A, send til db funktion, returner værdi til felt B

  2. Begrænsning af returneret post fra SQL-forespørgsel i Oracle

  3. Sådan fungerer LTRIM_ORACLE() i MariaDB

  4. Regneark vs. databaser:Er det tid til at skifte? Del 2