【发布时间】:2012-11-30 14:19:12
【问题描述】:
您好,我很难意识到出了什么问题..
当我在 mysql 中运行这条语句时..
select brand_id, brand_name,
max(case when group_row_number = 1 then linecode end) Code1,
max(case when group_row_number = 2 then linecode end) Code2,
max(case when group_row_number = 3 then linecode end) Code3,
max(case when group_row_number = 4 then linecode end) Code4,
max(case when group_row_number = 5 then linecode end) Code5,
max(case when group_row_number = 6 then linecode end) Code6,
max(case when group_row_number = 7 then linecode end) Code7,
max(case when group_row_number = 8 then linecode end) Code8,
max(case when group_row_number = 9 then linecode end) Code9,
max(case when group_row_number = 10 then linecode end) Code10
from ( select brand_id, brand_name, linecode,
@num := if(@brand_id = `brand_id` AND @brand_name = `brand_name`, @num + 1, 1) as
group_row_number, @brand_id := `brand_id` as dummy,
@brand_name := `brand_name` as linedummy from linecodes_temp )
src group by brand_id, brand_name order by if(linecode = '' or linecode is null,1,0),
brand_name ASC;
我收到了我想要的结果。
+----------+----------------------------------------------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+
| brand_id | brand_name | Code1 | Code2 | Code3 | Code4 | Code5 | Code6 | Code7 | Code8 | Code9 | Code10 |
+----------+----------------------------------------------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+
| DPQT | 1-800 Tow Truck | DCF | DCA | AAA | DDD | DER | NULL | NULL | NULL | NULL | NULL |
| BLGR | 1-800-Radiator | Curt | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| BGVM | 100+ Manufacturing/Coyote | ASC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| DPQS | 10C Technologies Inc | ASQ | AQW | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| FDJG | 2 Cool AirVents | CAS | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| DWFD | 31 Incorporated | ASD | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| BBBB | 3M | snoop | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
这是完美的。
但是当我转身并在 php 中调用它时。
$result = mysql_query("select brand_id, brand_name, max(case when group_row_number = 1 then linecode end) Code1, max(case when group_row_number = 2 then linecode end) Code2, max(case when group_row_number = 3 then linecode end) Code3, max(case when group_row_number = 4 then linecode end) Code4, max(case when group_row_number = 5 then linecode end) Code5, max(case when group_row_number = 6 then linecode end) Code6, max(case when group_row_number = 7 then linecode end) Code7, max(case when group_row_number = 8 then linecode end) Code8, max(case when group_row_number = 9 then linecode end) Code9, max(case when group_row_number = 10 then linecode end) Code10 from ( select brand_id, brand_name, linecode, @num := if(@brand_id = `brand_id` AND @brand_name = `brand_name`, @num + 1, 1) as group_row_number, @brand_id := `brand_id` as dummy, @brand_name := `brand_name` as linedummy from linecodes_temp ) src group by brand_id, brand_name order by if(linecode = '' or linecode is null,1,0), brand_name ASC",$dbh);
然后做一个
while($row = mysql_fetch_assoc($result)) {
遍历表格
我得到的结果是
brand_id brand_name Code1 Code2 Code3 Code4 Code5 to Code 10
DPQT 1-800 Tow Truck DER
BLGR 1-800-Radiator Curt
BGVM 100+ Manufacturing/Coyote ASC
DPQS 10C Technologies Inc ASQ
FDJG 2 Cool AirVents CAS
DWFD 31 Incorporated ASD
BBBB 3M snoop
当我执行 var_dump($row) 时,上面 php 查询的结果会显示出来,所以我知道我在这方面没有做错任何事情
我在 mysql 和 php 中都使用了完全相同的查询
如果有人能帮忙,我将非常感谢
感谢您的宝贵时间。
【问题讨论】:
-
显示您的显示代码,例如
var_dump($row)在您的 fetch 循环中。简单地从 PHP 运行它不太可能改变结果。 -
我只是做了同样的结果。正如我从 php 发布的表格一样。
-
所以除了第一个“Code1”之外,您没有得到任何其他代码?那是对的吗?仅供参考,出于安全原因,不鼓励使用 mysql 命令,而建议使用更安全的 mysqli 命令。
-
我同意@MarcB。检查您的循环逻辑以确保一切都按您的预期进行。
-
我将其转换为 mysqli 并且结果相同
标签: php mysql sql database select