Php 获取查询中未声明的用户
我得到了这个问题:Php 获取查询中未声明的用户,php,sql,sql-server,Php,Sql,Sql Server,我得到了这个问题: $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
$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'])."'
";
但我希望没有氏族的成员也能看到,但在氏族名称应该出现的地方,会显示“-”而不是氏族名称
这是我的发言:
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
它显示1行,而该帐户中有2个字符,1个有一个氏族,而另一个没有。是否需要左外部联接:
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 ...
是否需要左外连接:
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 ...
您需要一个
外部联接
,该联接将返回查询,以确定它们是否与您的一个表匹配。语法将取决于您使用的数据库。你应该为你的问题添加正确的数据库标签。是的,对不起,现在就这么做。那么我该如何设置它呢?我不太了解sql server,但是@danihp的答案看起来像是正确的ansi,因此+1您需要一个外部联接
,它将返回查询它们是否与您的某个表匹配。语法将取决于您使用的数据库。你应该为你的问题添加正确的数据库标签。是的,对不起,现在就这么做。那么我该如何设置它呢?我不太了解sql server,但是@danihp的答案看起来像是正确的ansi,所以+1很抱歉,但它不起作用。。我已经把输出放在我编辑的帖子里了。我犯了一个错误。现在我只有家族成员了。一个没有被展示的,是的。您需要2个外部连接。很抱歉我确定答案。再试一次!问候@SinanSamet,祝你的项目好运。谢谢你,这些内部和外部的连接让我有点困惑,但我会努力学习,因为有时它似乎真的很有用。很抱歉,它不起作用。。我已经把输出放在我编辑的帖子里了。我犯了一个错误。现在我只有家族成员了。一个没有被展示的,是的。您需要2个外部连接。很抱歉我确定答案。再试一次!问候@SinanSamet,祝你的项目好运。谢谢你,这些内部和外部的连接让我有点困惑,但我会努力学习它,因为它有时看起来真的很有用。