我只是一名实习生,所以请不要对我进行评判。我一生无法理解以下查询在做什么:
"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);
答案 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 |
+----+---------------+
但是它只会返回每个类别之一。