簡體   English   中英

簡單的sql多表查詢

[英]Simple sql multi-table query

我在我的網站上編寫了一個聊天室,但我對php很新。 我希望用戶能夠與在游戲的相同團隊中玩的用戶聊天(知道用戶可以一起參與不同的團隊)以及在同一區域工作的用戶。

假設有三個表:帳戶用戶的表,區域的能力,游戲的表格

我有一個函數返回我的查詢

function myfunction($userid){

$games_user=mysql_query('select theme from games where games.userid="'.$userid.'"');  
$games_theme = mysql_fetch_array($games_user);

$sql = ("select  userid, username, area.userid 

    from account 
        left join area
            on account.userid = area.userid    

        left join games
            on account.userid = games.userid

    where account.userid <> '".mysql_real_escape_string($userid)."' and '".(in_array(games.theme,$games_theme))."' and area.userid=1 
 );
 return $sql;
}

重新格式化:

$sql = "
SELECT userid, username, area.userid 
FROM account 
LEFT JOIN area ON account.userid = area.userid    
LEFT JOIN games ON account.userid = games.userid
WHERE account.userid <> '".mysql_real_escape_string($userid)."'
  AND '".(in_array(games.theme,$games_theme))."'
  AND area.userid = 1 
";

但它確實不起作用,我認為我有語法問題。 我真的不明白in_array是如何編入索引的,而且我不知道如何以更簡單的方式進行查詢

有人可以幫忙嗎?

我還不完全確定你在做什么,但我認為這就是你想要的; 您可以在一個查詢中執行此操作:

<?php
function myfunction($userid){
    $id = mysql_real_escape_string($userid);
    $sql = "SELECT  userid, username, area.userid 
        FROM account 
            LEFT JOIN area
                ON account.userid = area.userid    
            LEFT JOIN games
                ON account.userid = games.userid
        WHERE account.userid<>'$id' AND area.userid=1
            AND games.theme IN (SELECT theme FROM games WHERE games.userid='$id')
    ";
    return $sql;
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM