分组未显示所有结果

时间:2015-01-17 19:27:47

标签: php mysql pdo group-by distinct

所以我有一张叫做“手表”的桌子

然后我有3列像这样

id | manufacture | model
1    rolex         2483
2    rolex         3940
3    rolex         4940
4    dent          ee30

但我希望输出像

rolex
dent

但是当我尝试以下选择制造商时

('SELECT manufacture FROM `watches` GROUP BY manufacture')

当它应该是“劳力士,凹痕”时,它只显示“凹痕”。怎么不行呢。 iv也尝试了这个,但这给出了相同的结果

('SELECT DISTINCT(`manufacture`) FROM `watches`')

全功能

$query = $this->pdo->prepare('SELECT DISTINCT(`manufacture`) FROM `watches`');


        $query->execute();

        if($query->fetch()){

            $row = $query->fetchAll();
            foreach($row as $i){
                $select .= '<option value="'.$i['manufacture'].'">'.$i['manufacture'].'</option>';
            }
            return $select;
        } else {
            return '<option value="0">No watches yet!</option>';
        }

3 个答案:

答案 0 :(得分:1)

请尝试使用

if ($query->rowCount() > 0) {

而不是

if($query->fetch()){

因为fetch从语句中获取结果,但为此您在成功代码中使用fetchAll

答案 1 :(得分:0)

添加WHERE 1

'SELECT `manufacture` FROM `watches`WHERE 1 GROUP BY `manufacture`

总是将表格和列名称与重音符号括起来是一种很好的做法。

答案 2 :(得分:0)

您只需要按制造商订购:

SELECT manufacture FROM `watches` GROUP BY manufacture ORDER BY manufacture desc