0

さて、私はこのクエリを取得しました:

$characterinfoquery = "
SELECT 
    c.Name, 
    c.Level, 
    c.Sex, 
    c.Playtime, 
    c.KillCount, 
    c.DeathCount,
    cl.Name AS clanName
FROM 
    Character AS c, 
    Account AS a,
    ClanMember AS cm,
    Clan AS cl
WHERE 
    c.AccountID = a.AccountID AND
    c.CharacterID = cm.CharacterID AND
    cm.ClanID = cl.ClanID AND
    a.UserID='".mssql_real_escape_string($_SESSION['username'])."'
";

でも、クランを持っていないメンバーも見せてほしいのですが、クラン名の代わりに、クラン名のあるところに「-」と書いてあります。

これは私のwhileステートメントです:

if(mssql_num_rows($characterinforesult) != 0){
    $content = str_replace("%content%", file_get_contents("tpl/contents/characterinfo.html"), $content);

    //Get character information
    $search = array("%Name%", "%Level%", "%Sex%", "%Playtime%", "%KillDeath%", "%Clan%");
    $rows = file_get_contents("tpl/contents/characterinfo_tr.html");
    while($row = mssql_fetch_assoc($characterinforesult)){

        if($row['KillCount'] != 0){
            $KillDeath = round($row['KillCount']/$row['DeathCount'], 2);
        }
        else{
            $KillDeath = "-";
        }
        $Playtime = $row['Playtime']/60;
        $replace = array($row['Name'], $row['Level'], gender($row['Sex']), round($Playtime), $KillDeath, $row['clanName']);
        $tr .= str_replace($search, $replace, $rows);
    }
}

誰かがこれを手伝ってくれませんか?

内部結合を使用した出力:

Name    Level   Sex     Playtime    K/D Ratio   Clan
DragonDex   97  Male    375 min     0.22            Test

そのアカウントには2つの文字があり、1つにはクランがあり、もう1つにはクランがない1行が表示されます。

4

1 に答える 1

3

左外側の結合が必要ですか:

SELECT 
    c.Name, 
    c.Level, 
    c.Sex, 
    c.Playtime, 
    c.KillCount, 
    c.DeathCount,
    coalesce( cl.Name, ' - ' ) AS clanName
FROM 
    Character AS c 
          inner join  
    Account AS a 
          on c.AccountID = a.AccountID
          left outer join 
    ClanMember AS cm 
          on c.CharacterID = cm.CharacterID
          left outer join 
    Clan AS cl
          on cm.ClanID = cl.ClanID
WHERE 
    a.UserID='".mssq ...
于 2012-08-05T12:50:31.713 に答える