Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询中多列上的DISTINCT或GROUP BY出现问题_Php_Mysql_Sql_Group By_Distinct Values - Fatal编程技术网

Php SQL查询中多列上的DISTINCT或GROUP BY出现问题

Php SQL查询中多列上的DISTINCT或GROUP BY出现问题,php,mysql,sql,group-by,distinct-values,Php,Mysql,Sql,Group By,Distinct Values,我正在使用PHP和MYSQL填充数据库中的一些下拉列表 然而,我一直不明白为什么下面的查询只填充第一列(城市),而且也没有分组,这是从需要分组的一堆列中指定的 SELECT City, NativeTown, Language, State FROM candidates WHERE ApprovalCode!='' AND Gender='$gtype' GROUP BY City, NativeTown, Language, State ORDER BY City,NativeTow

我正在使用PHP和MYSQL填充数据库中的一些下拉列表

然而,我一直不明白为什么下面的查询只填充第一列(城市),而且也没有分组,这是从需要分组的一堆列中指定的

SELECT City, NativeTown, Language, State 
FROM candidates 
WHERE ApprovalCode!='' AND Gender='$gtype' 
GROUP BY City, NativeTown, Language, State 
ORDER BY City,NativeTown,State,Language ASC
我也试过了

SELECT DISTINCT City, NativeTown, Language, State 
FROM candidates 
WHERE ApprovalCode!='' AND Gender='$gtype' 
ORDER BY City,NativeTown,State,Language ASC
但是,在这两个城市中,只有城市人口增加,而且没有分组

我哪里做错了

附言:

数据库

实际代码

$getC=$maindb->query("SELECT City, NativeTown, Language, State FROM candidates 
WHERE ApprovalCode!='' AND Gender='$gtype' 
GROUP BY City, NativeTown, Language, State 
ORDER BY City,NativeTown,State,Language ASC") or die("LIST ERROR :".$maindb->error);


    City<br>
        <!-- <input type="text" name="city" id="city" Placeholder="City" <?php //if(isset($filtvals['city'])){echo "Value ='$filtvals[city]'";}?>>-->

        <select name="city" id="city">
                <option value="Choose">Choose</option>
                <?php while($getClist=$getC->fetch_assoc()){?>
                <option value="<?php  echo $getClist['City'];?>" <?php if(isset($filtvals['city']) && $filtvals['city']==$getClist['City']){echo "Selected='Selected'";}?>><?php  echo $getClist['City'];?></option>
                <?php } $e=error_get_last(); print_r($e);?>
        </select>
    </div>

    <div>State<br>
        <select name="State" id="State">
                <option value="Choose">Choose</option>
        <?php while($getClist=$getC->fetch_assoc()){?>
                    <option value="<?php  echo $getClist['State'];?>" <?php if(isset($filtvals['State']) && $filtvals['State']==$getClist['State']){echo "Selected='Selected'";}?>><?php  echo $getClist['State'];?></option>
            <?php }$e=error_get_last(); print_r($e); ?>
        </select>
    </div>

    <div>Native<br>
        <select name="NativeTown" id="native">
                <option value="Choose">Choose</option>

        <?php while($getClist=$getC->fetch_assoc()){?>
                <option value="<?php  echo $getClist['NativeTown'];?>" <?php if(isset($filtvals['NativeTown']) && $filtvals['NativeTown']==$getClist['NativeTown']){echo "Selected='Selected'";}?>><?php  echo $getClist['NativeTown'];?></option>
            <?php } ?>
        </select>
    </div>


    <div>Language<br>
        <!--<input type="text" name="native" id="native" Placeholder="Native Town" <?php //if(isset($filtvals['native'])){echo "Value ='$filtvals[native]'";}?>>-->
        <select name="Language" id="Language">
                <option value="Choose">Choose</option>

        <?php while($getClist=$getC->fetch_assoc()){?>
                <option value="<?php  echo $getClist['Language'];?>" <?php if(isset($filtvals['Language']) && $filtvals['Language']==$getClist['Language']){echo "Selected='Selected'";}?>><?php  echo $getClist['Language'];?></option>
            <?php } ?>
        </select>
    </div>
$getC=$maindb->query(“从候选者中选择城市、本地镇、语言、州
其中ApprovalCode!=''和性别='$gtype'
按城市、本州、语言、州分组
按城市、本地镇、州、语言ASC)或die排序(“列表错误:.$maindb->错误);
城市
选择
您应该更改所有PHP代码。您需要为每一列获取一次查询结果,这是不可能的。你必须这样做:

$getC=$maindb->query("SELECT City, NativeTown, Language, State FROM candidates 
WHERE ApprovalCode!='' AND Gender='$gtype' 
ORDER BY City,NativeTown,State,Language ASC") or die("LIST ERROR :".$maindb->error);
data=[];
while($getClist=$getC->fetch_assoc()){
    data[]=[$getClist['City'].$getClist['State'],$getClist['NativeTown']]
}

现在你有了一个包含数据的数组。现在在代码中,您需要迭代该数组。

编辑您的问题并显示示例数据和您得到的结果。您的
SELECT
查询不可能只返回
city
字段行。深入研究您的php代码。@GordonLinoff,我已经提到,我已经列出了包含数据的列,但是结果是,除了这些列之外,没有填充选择框City@TedoG以上就是我在PHP代码中看到的,为什么在不涉及聚合函数的情况下分组?我确实考虑过它,@nacho。但我想试着一次就把所有东西都拿回来。谢谢你指出这是不可能的。这是一个真正的答案。不像那些虚荣的“没有解决方案的选民”!不要使用GROUP BY子句,您不需要它原因是,我只需要不同的值,然后使用SELECT DISTINCT City。。。更有效&我也尝试过,我在某处看到“选择不同的列名称”与“按列名称选择列名称组”相同