不确定sql查询在做什么

时间:2019-06-18 07:58:46

标签: php html mysql

我只是一名实习生,所以请不要对我进行评判。我一生无法理解以下查询在做什么:

"select id as cat,category_name from category where  parent_id='0' and child_id='0' and exim_code!='0' and dis_status='1' group by category_name asc"

这是一个实时网站,要求我对其进行分析,因此,我只是在阅读代码而不真正对其进行测试。下面是完整的代码段。

$cat = isset($cat)?$cat:'';
echo $drop->get_dropdown($db,"select id as cat,category_name from 
category where  parent_id='0' and child_id='0' and exim_code!='0' and            
dis_status='1' group by category_name asc",$MS_Categ);

1 个答案:

答案 0 :(得分:0)

select id as cat, category_name
from category
where parent_id='0' and child_id='0' and exim_code!='0' and dis_status='1'
group by category_name asc

此查询从类别表中选择,并过滤所有结果,其中parent_id为0,child_id为0,dis_status为1,但exim_code不等于0。

完成过滤后,它将按类别名称对所有内容进行分组。换句话说,如果有10个“服装”结果,它将仅返回其中之一。

然后返回id字段(重命名为“ cat”)和类别名称。

由于查询未按ID字段分组,因此该ID可以是具有关联category_name的任何ID。

我假设已完成所有操作,以获得链接到唯一category_name的有效ID,因此可以将其放入下拉列表中,并将ID作为值,并将类别名称作为文本。我的假设是,链接到该类别的任何ID都可以。

编辑:添加分组依据的说明

分组依据将相似的记录分组在一起,仅返回其中一个。例如,给定以下数据:

+----+---------------+
| id | category_name |
|----+---------------+
|  1 | A             |
|  2 | B             |
|  3 | C             |
|  4 | B             |
|  5 | B             |
|  6 | A             |
+----+---------------+

上述查询的结果将返回类似:

+----+---------------+
| id | category_name |
|----+---------------+
|  1 | A             |
|  2 | B             |
|  3 | C             |
+----+---------------+

不能保证ID字段将返回,也可能返回:

+----+---------------+
| id | category_name |
|----+---------------+
|  3 | C             |
|  4 | B             |
|  6 | A             |
+----+---------------+

但是它只会返回每个类别之一。