它会如何在这样的东西中起作用?我甚至尝试使用" AND tb1.name!=",但它没有用。
$area = 0;
$stmt = $dbh->prepare('SELECT * FROM charinfo WHERE current_area != :area ORDER BY current_area');
$stmt->execute(array('area' => $area));
$result = $stmt->fetchAll();
$place = 1;
我运行一个游戏服务器,在网站上我有一个Top 30排行榜,它正在创造奇迹(在这里直接找到了另一个主题的代码),我遇到的问题是无法使用JOIN每个人都建议的功能,以防止管理员的角色被列出。
这是我现在在我网站上的代码,它显示了排名编号1-30,字符名称和表格中的级别。 Here's it working on my website
<?php
require("srvcs/config.php");
$stmt = $dbh->prepare('SELECT * FROM chars ORDER BY CAST(experience AS UNSIGNED ) DESC LIMIT 30;');
$stmt->execute();
$result = $stmt->fetchAll();
$place = 1;
echo '<table class="justShowme" style="width:600px;height:150px;">
<tr>
<td>Rank</td>
<td>Character Name</td>
<td>Level</td>
</tr>';
foreach ($result as $index => &$item) {
$exp = floor(pow($item['experience'] + 1, 1/4));
$name = $item['name'];
echo '<tr>';
echo "<td><B>" . $place++ . "</B></td>";
echo "<td>" . $name . "</td>";
echo "<td>" . $exp . "</td>";
echo '</tr>';
}
echo '</table></center>';
?>
我对MySQL不太熟悉,所以我首先列出我认为必要的内容......
&#39;字符&#39;表包含字符信息
'sID' column is unique and matches the subscriber 'ID' column, whoever owns the character
&#39;订户&#39;表格包括帐户信息和管理状态
'ID' is the subscriber ID which the 'sID' from chars table refers to
'admin' is the admin status of the account as Y or N
如果某个字符的sID值为订阅者ID且admin值为Y,则不应列出该值。
如果角色的sID值为具有管理员值N的订户ID,则会列出该值并将该表列为DESC并仅显示30行结果。
我将如何做到这一点?
任何帮助将不胜感激!这是我的第一篇文章,所以关于未来帮助请求的提示也会很好:)提前谢谢你!
答案 0 :(得分:1)
SELECT tb1.*
FROM chars tb1
JOIN subscriber tb2
ON tb1.sID=tb2.ID
WHERE admin = 'N'
ORDER BY CAST(experience AS UNSIGNED ) DESC
LIMIT 30;
答案 1 :(得分:0)
您可以使用NOT IN子查询。
见下文。
SELECT chars.*
FROM chars
WHERE sID NOT IN (SELECT ID FROM subscriber WHERE subscriber.admin = 'Y')
ORDER BY CAST(experience AS UNSIGNED ) DESC
LIMIT 30;