0

我正在使用 PHP/MYSQL 创建一个小项目,但我无法让我的查询按我需要的方式工作。我有 2 张桌子

表 1(字符):

Id, name.

表 2(拼写):

Id, char, spell_name.

我得到输出:

Name Spell1
Name Spell2
Name Spell3

但我需要它是:

Name Spell1
     Spell2
     Spell3

这是我的查询:

 $query = "SELECT char.name AS name, spells.spell_name AS spell
              FROM char, spells
              WHERE (char.id = spells.spell_name)";

有任何想法吗?

4

2 回答 2

0

正如 Goldentoa11 所写。进行两次选择,或者创建具有两个结果集的查询(一个命令中有更多选择),或者接受当前状态(正常,您可以验证数据一致性)。我更喜欢当前状态,但有时使用任何描述的解决方案(基于查询频率、结果大小等)。

如果您需要列出此类数据,则可以使用以下内容:

$currentName = null;

while ($row = mysql_fetch_object($result))
{
    if ($currentName != $row->name)
    {
        echo "<b>" . $row->name . "</b><br />";
        $currentName = $row->name;
    }

    echo $row->spell_name . "<br />";
}
于 2013-06-21T16:59:19.030 回答
0

我认为您必须首先获取要查询的角色的 ID,然后提取他/她可以访问的咒语。例子:

$char_id = 0; // value would be assigned arbitrarily.

$query = "SELECT *
FROM 'spells' s
WHERE s.char = $char_id;";

$result = $pdo->query($query);

while($row = $result->fetchObj()){
    // do something with the spells obj here
}

使用 SQL,您需要一次抓取整行,所以我相信您想要的情况是不可能的。

于 2013-06-21T15:27:10.780 回答