sql >> Databáze >  >> RDS >> Mysql

Friendship System Sql Structure &Query

Použijte:

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

Pomocí UNION odstraní duplikáty. UNION ALL by bylo rychlejší, ale neodstraní duplikáty.

Pokud chcete získat informace pro přátele od MEMBERS tabulka, použijte:

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:Doufám, že používáte mysql_escape_string na proměnné, jinak riskujete útoky SQL injection:



  1. Jak používat připravené příkazy v dotazech s klauzulí IN v PHP

  2. Jak opravit „Schéma oddílů ‚…‘ nemá žádnou další použitou skupinu souborů“ v SQL Server

  3. Která je nejrychlejší? SELECT SQL_CALC_FOUND_ROWS FROM `tabulka` nebo SELECT COUNT(*)

  4. Jak lze v Oracle zřetězit více řádků do jednoho bez vytvoření uložené procedury?