1

お問い合わせページを作りたいです。これが私のテーブル構造です:

Accounts Table: 

1) id
2) User_id
3) Full_name
4) Username
5) Email
6) Password

Contacts Table: 

1) My_id (This is the user who added friend_id)
2) Contact_id (this is the contact who was added by my_id)
3) Status

私のクエリは次のようになります。

$sid = ID of user who is viewing;

$sql = "SELECT STRAIGHT_JOIN DISTINCT contacts.contact_id, 
accounts.full_name FROM contacts INNER JOIN accounts
on contacts.contact_id = accounts.user_id WHERE 
contacts.my_id = '$sid' OR contacts.contact_id = '$sid'"; 

問題は、それが正しい方法で機能しないことです。クエリに自分の名前が表示されることになります(つまり、ログインすると、連絡先名ではなく連絡先に自分の名前が表示されます)。

これを修正する方法は?ありがとう。

4

2 に答える 2

2

ここSTRAIGHT_JOINではキーワードは必要ありません。連絡先情報を取得するには、アカウントに関連付けるテーブルの1番目JOINを使用します。contacts

SELECT
  DISTINCT c.contact_id,
  cn.full_name
FROM 
  accounts a
  /* first join connects the adding user's id to records in contacts */
  INNER JOIN contacts c ON a.user_id = c.My_id
  /* second join connects contact list user ids back to names in accounts */
  INNER JOIN accounts cn ON cn.user_id = c.Contact_id
WHERE a.User_id = '$sid'
于 2012-05-08T01:40:52.593 に答える
1

このクエリで十分です。

SELECT DISTINCT contacts.contact_id, accounts.full_name
FROM contacts, accounts
WHERE (contacts.my_id = '$sid' AND contacts.contact_id = accounts.user_id)
OR (contacts.contact_id = '$sid' AND contacts.my_id = accounts.user_id)
于 2012-05-08T01:44:53.513 に答える