PHP MySQL的嵌套结果
我有3个表:PHP MySQL的嵌套结果
轮廓
ID | fname |政策
用户
ID |全名| claimnum
和returnprod
claim_id | prodname |说明
我的SQL是这样的:
("SELECT *
,CONCAT(fname, ' ' ,lname) AS fullName
,CONCAT(firstname, ' ' ,lastname) AS InsName
,a.address AS ADDRESS
,a.city AS CITY
,a.state AS STATE
,a.zip AS ZIP
,a.phone AS PHONE
,a.fax AS FAX
,a.email AS EMAIL
FROM profile a
INNER JOIN returnprod b ON a.policy = b.claim_id
INNER JOIN users c ON a.adjuster_id = c.id
WHERE date >= '$Start' AND date <= '$End'
跳跃前进一点点地循环
`$products[]= $row;`
`foreach ($products as $product)
{
if ($row['policy'] === $product['claim_id']) {
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowcount,$product['product']);
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowcount, $product['comment']);
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowcount, $product['anotes']);
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowcount, $product['price']);
}`
这是工作的罚款,如果只有一个产品。结果会看起来像这样...
row 1:claim_id |名字|调节器名称
第2行:产品名称|描述|等
如果我有一个以上的产品出现这种情况...
第1行:claim_id |名字|调节器名称
第2行:产品名称|描述|等
第3行:claim_id |名字|调节器名称
第4行:产品名称|描述|等
第5行:产品名称|描述|等
而是所有的产品组合在一起,并显示他们都低于它给我的第一个结果的轮廓下,然后再次给我的个人资料,与第一个产品,然后第二个产品档案信息的。
我该如何对第一次将配置文件下的所有产品进行分组?
实施例:
行1:claim_id |名字|调节器名称
第2行:产品名称|描述|等
第3行:产品名称|描述| etc
谢谢您花时间阅读本文。
$products[] = $row
似乎表明这不是唯一的循环;更多的上下文可能有帮至少,您会希望按照您打算分组的(ORDER BY a.id, a.policy)
来对数据库结果进行排序。然后,您可以保留对上次看到的策略的引用,并在匹配时跳过标题。
$last_id = '';
foreach ($rows as $row) {
if (! $row['policy'] === $last_id) {
// Write claim_id | firstname | adjuster name
}
// Write productname | description | etc
$last_id = $row['policy'];
}
假设是你所追求的......
我去这个以不同的方式。
而不是使用FOREACH我结束了使用WHILE。
while($row = mysql_fetch_array($result)){
// CODE TO QUERY PROFILE INFORMATION
$productquery=("SELECT * FROM returnprod WHERE claim_id = '$POLICY'");
while($product = mysql_fetch_array($prods)){
//CODE TO QUERY THE PRODUCTS ASSOCIATED WITH THE PROFILE
}
}
然后我在$结果添加GROUP BY a.policy
没有问题,这可能是一个令人满意的解决方案 – Strawberry
您的查询不应该'claim_id迭代|名字|调整器名称“在foreach中,你需要保持它在foreach之外。 – Pawan
我没有在每个循环中。回答上面更新以反映每个内部。 – Billy