2011-02-07 8 views
0

私はこれらの3つのテーブルがあります。PHPユーザーに関する3つのテーブルから情報を選択するためのクエリと彼の仲間

usersテーブル(PKのUSER_ID)

Fields: user_id, user_first_name, user_last_name, username, user_email...etc 

仲間テーブル(FKのuser1_id、PKのuser_idからuser2_idをユーザーテーブル内)

pal_id user1_id user2_id   status  timestamp 
7   98    97    0  2011-02-02 21:44:28 
8   92    98    1  2011-02-04 08:06:00 
9   95    92    0  2011-02-04 08:05:54 
10   97    92    1  2011-02-04 08:05:28 
11   97    95    1  2011-02-04 08:06:33 
9   92    93    1  2011-02-04 08:05:54 
10   79    92    1  2011-02-04 08:05:28 
11   97    95    1  2011-02-04 08:06:33 

画像テーブル(ユーザテーブルのPKのUSER_IDからFKのUSER_ID)

picture_id picture_url    picture_thumb_url    user_id avatar   timestamp 
73  ../User_Images/66983.jpg ../User_Images/Thumbs/66983.jpg  92  0 2011-02-03 21:52:02 
74  ../User_Images/56012.jpg ../User_Images/Thumbs/56012.jpg  93  1 2011-01-25 12:09:58 
75  ../User_Images/58206.jpg ../User_Images/Thumbs/58206.jpg  95  0 2011-01-22 22:12:35 
76  ../User_Images/85428.jpg ../User_Images/Thumbs/85428.jpg  98  0 2011-01-23 23:50:16 
77  ../User_Images/42325.jpg ../User_Images/Thumbs/42325.jpg  98  0 2011-01-24 00:11:15 
78  ../User_Images/73154.jpg ../User_Images/Thumbs/73154.jpg  98  1 2011-01-24 00:11:15 
81  ../User_Images/92865.jpg ../User_Images/Thumbs/92865.jpg  92  0 2011-01-31 18:24:34 
82  ../User_Images/75611.jpg ../User_Images/Thumbs/75611.jpg  92  0 2011-01-26 18:08:52 
83  ../User_Images/74829.jpg ../User_Images/Thumbs/74829.jpg  95  0 2011-02-01 20:48:48 
84  ../User_Images/5987.jpg  ../User_Images/Thumbs/5987.jpg  92  1 2011-02-03 21:52:02 

私はソーシャルネットワーキングサイトを作っています。ここでは、PHPで生成されたテーブルにユーザの仲間が表示されます。これらのサムネイルの下にpalのサムネイルやその他の情報を表示してサムネイルをクリックすると、そのユーザーのプロフィールに移動します。彼らは友情を確認しているので、

以上から

、利用者92は、ユーザ98との仲間である(ステータスとして示さ=「1」)

...彼は2と他の2人のユーザーが彼送られ、要求されたユーザ92は、4人の仲間を持っています要求。

'' 追加 'B'

USER1ます(仲間を追加する方法について説明します):

彼の仲間は、ユーザー98、97、93および79

これを見てみましょうです'A' であるとUser2は、PALテーブル上の 'B' になり

'B' は、 'A'

User1が 'B' になり、User2がPALテーブルに 'A' であろうを追加した場合

ユーザーは、上記の画像テーブルに保存されている画像を持つことができます。ユーザは彼の写真から彼のアバターを選択する...これは彼のpicture.avatar = '1'のうちの1つをセットすることによって行われる。

ユーザー92は、自分のアップロードしたアバター画像を選択しました。したがって、ユーザー98と93があります。他の2人の仲間には、デフォルトのアバター画像があります。 (すべての画像はUser Imagesフォルダに保存されています)。

MY問題。

これまでのところ、たとえばユーザー92のプロファイルでは、アバターを持つユーザーのpal情報のみを取得できます。私のコードを変更して、アバターとそれがない仲間を得ることができるようにするにはどうすればよいですか?

私のPHPコード:私のクエリで

<?php 
//get pal info 
$query_pal_info1 = "SELECT pals.user2_id AS pals_id1, users.user_first_name AS pals_first_name, users.user_last_name AS pals_last_name, picture.picture_thumb_url AS 
picture, picture.avatar AS avatar FROM pals INNER JOIN (users LEFT JOIN picture ON picture.user_id = users.user_id) ON users.user_id = pals.user2_id WHERE 
pals.user1_id = '$user_id' AND picture.avatar = 1 GROUP BY pals_id1"; 
$pal_info1 = mysql_query($query_pal_info1 , $connections) or die(mysql_error()); 

$query_pal_info2 = "SELECT pals.user1_id AS pals_id1, users.user_first_name AS pals_first_name, users.user_last_name AS pals_last_name, picture.picture_thumb_url AS 
picture, picture.avatar AS avatar FROM pals INNER JOIN (users LEFT JOIN picture ON picture.user_id = users.user_id) ON users.user_id = pals.user1_id WHERE 
pals.user2_id = '$user_id' AND picture.avatar = 1 GROUP BY pals_id1"; 
$pal_info2 = mysql_query($query_pal_info2 , $connections) or die(mysql_error()); 

//echo table with pal information 
echo "\n<table>"; 
$j = 5; 
while (($row_pal_info1 = mysql_fetch_assoc($pal_info1)) && ($row_pal_info2 = mysql_fetch_assoc($pal_info2))) 
{ 
    if($j==5) echo "\n\t<tr>"; 
    $thumbnail_user = $row_pal_info1['picture'] != '' ? $row_pal_info1['picture'] : '../Style/Images/default_avatar.png'; 
    echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2={$row_pal_info1['pals_id1']}'> 
    <img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n"; 
    $thumbnail_user = $row_pal_info2['picture'] != '' ? $row_pal_info2['picture'] : '../Style/Images/default_avatar.png'; 
    echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2={$row_pal_info2['pals_id1']}'> 
    <img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n"; 
    $j--; 
    if($j==0) { 
    echo "\n\t</tr>\n\t<tr>"; 
    $j = 5; 
    } 
} 
if($j!=5) echo "\n\t\t<td colspan=\"$j\"></td>\n\t</tr>"; 
echo "\n</table>"; 
?> 

:$ query_pal_info1と$ query_pal_info2、私が持っている... AND picture.avatar = 1.私は、これはアバターを持っているだけで、私の仲間をもたらすことを理解しています。画像の有無にかかわらず、すべての仲間を得ることができるように、この声明をどのように変更するのですか?どんな助けもありがとう。

+0

[PHPの3つのテーブルから必要な情報を照会する方法](http://stackoverflow.com/questions/4894861/php-how-to-query-information-needed-from-3-3)テーブル・イン・ワン・セレクト・ステートメント) –

答えて

0

クエリからAND picture.avatar = 1を削除します。

将来的には、クエリをSQLエディタにコピーし、少し遊び、望ましい結果を得るために削除する必要のある述語を確認することには問題ありません。

+0

返信いただきありがとうございます。私がそれを削除した場合、私はuser_92さんの4人の仲間のすべてに言い聞かせることができます。しかし、どのようにして彼らのアバターを手に入れることができますか? –

+0

@kinyanjui 'picture.avatar'をselect文に追加し、PHPループで' if($ row_pal_info1 ['avatar'] == 1) 'をチェックします。 –

関連する問題