我有4個表(在下面進行說明),並需要:MySQL的選擇,並在那裏過幾個表(很棘手)
- 得到3房近10個聊天沒有被禁止用戶
- 秀fromuserid 暱稱
- 隱藏用戶$用戶ID不喜歡看錶 「HIDE」
表1 「聊天」
ID(autoinc) fromuserid roomid text
1 23 3 bla
2 14 1 bla
3 11 3 bal
表2「用戶」 /短路/
ID(autoinc) nickname banned
1 chris 0
2 paul 1 // 1 = banned
表3「隱藏」
ID(autoinc) orguser hideuser
1 12 3
2 33 12
現在,我用PHP程序解決了這個問題,但我必須要經過每一個結果,並始終一個新的查詢,需要太長時間;
$userid = 1; // actual user
// List all chats and show userid as nickname
$sql_com = "SELECT user.id, user.nickname, chats.text, chats.id ".
" FROM chats, user".
" WHERE ".
" chats.fromuserid = user.id ".
" AND chats.roomid = 3 ".
" AND user.banned != 1 ".
" ORDER BY chats.id DESC";
$result = mysql_query ($sql_com);
$count = 0;
while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
$dontshow = false;
// Filter : dont show users $userid dont like to see (table "hide")
$sql_com2 = "SELECT id from hide WHERE ((orguser = ".$userid.") AND (hideuser = ".$row[0].")) ";
if ($result2 = mysql_query ($sql_com2))
{
if (mysql_num_rows($result2) > 0) $dontshow = true;
}
// Output
if ($dontshow == false)
{
$count++;
echo "Nickname: ".$row[1]." Text: ".$row[2];
}
if ($count > 10) break;
}
Btw。我已經提出了一些改進,所以實際的問題可能不適合所有的答案(感謝您的幫助,直到現在)
最後它現在只是要整合過濾器「不顯示人列在表」隱藏「我的實際用戶」。
THX ...我複習以前所有的問題現在:) – 2010-07-23 11:16:29