MySQL PHP嵌套结果

MySQL PHP嵌套结果,php,mysql,nested-loops,Php,Mysql,Nested Loops,我有三张桌子: 侧面图 id | fname |策略 使用者 id |全名|索赔 并返回prod 索赔| 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

我有三张桌子:

侧面图

id | fname |策略

使用者

id |全名|索赔

并返回prod

索赔| 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'
如果只有一种产品,这是很好的工作。结果会像这样

第1行:索赔| id |名字|理算人姓名 第2行:产品名称|说明|等

如果我有一个以上的产品,这种情况会发生

第1行:索赔| id |名字|理算人姓名 第2行:产品名称|说明|等 第3行:索赔| id |名字|理算人姓名 第4行:产品名称|说明|等 第5行:产品名称|说明|等

它不是将所有产品分组在一起并在配置文件信息下方显示所有产品,而是在配置文件下给我第一个结果,然后再给我第一个产品和第二个产品的配置文件信息

我如何在第一次对配置文件下的所有产品进行分组

例如:

第1行:索赔| id |名字|理算人姓名 第2行:产品名称|说明|等 第3行:产品名称|说明|等

感谢您花时间仔细阅读此内容。

$products[]=$row似乎表明这不是唯一的循环;更多的上下文可能会有所帮助。至少,您希望按照a.id、a.policy的顺序对DB结果进行排序。然后,您可以保留对上次看到的策略的引用,并在匹配时跳过标题

$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
}
}

然后,我在$result

中添加了GROUP BY a.policy,您的查询不应在foreach中的claim|id | firstname |调节器名称上迭代,您需要将其保留在foreach之外。我没有将其包含在for each循环中。以上更新的答案反映了for each的内部。对于任何问题,这都不是一个令人满意的解决方案
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
}
}