2017-03-09 73 views
0

我有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

謝謝您花時間閱讀本文。

+0

您的查詢不應該'claim_id迭代|名字|調整器名稱「在foreach中,你需要保持它在foreach之外。 – Pawan

+0

我沒有在每個循環中。回答上面更新以反映每個內部。 – Billy

回答

0

$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']; 
} 

假設是你所追求的......

-1

我去這個以不同的方式。

而不是使用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

+0

沒有問題,這可能是一個令人滿意的解決方案 – Strawberry