【发布时间】:2014-07-24 08:05:01
【问题描述】:
在下面我有 2 张桌子。在第一个表中,我有一个模型列表。在第二张桌子上,我为某些型号添加了键。例如,我为 Id 1 的模型添加了 2 个键(123 和 125)
模型
id(AI) model
1 100
2 101
3 100
4 105
5 107
模型键
keyid(AI) model_id key
1 1 123
2 1 125
3 4 125
4 5 127
现在,我想使用 PHP PDO 列出所有模型和模型的键。
<?php
$query =
"
SELECT
m.*,
mk.*
FROM
models as m
LEFT JOIN modelKeys as mk
ON m.id = mk.model_id
ORDER BY
m.id
";
$sql = $db -> query($query);
$sql -> execute();
$fetch = $sql -> fetchAll(PDO::FETCH_ASSOC);
?>
<ol>
<?php
foreach($fetch as $models)
{
echo "
<li>
$models[model]";
foreach($fetch as $keys)
{
echo "<ul>";
if($models['id'] == $keys['keyid'])
{
echo "<li>$keys[key]</li>";
}
echo "</ul>";
}
</li>";
}
?>
</ol>
结果
model
100
123
125
100
123
125
101
100
105
125
107
127
如您所见,编号为 100 的模型是重复的,因为它有 2 个键。我尝试使用SELECT DISTINCT 和GROUP BY,但没有得到正确的结果。
正确的结果应该是
model
100
123
125
101
100
105
125
107
127
【问题讨论】:
标签: php sql join pdo left-join