如何获取行列表并对每个PHP Mysql执行搜索

如何获取行列表并对每个PHP Mysql执行搜索,php,mysql,Php,Mysql,我有一个包含3个表的数据库(客户、蜂箱、检查) 每次检查只能有一个蜂箱和一个客户。一个客户可以有多个蜂箱,一个蜂箱可以有多个检查) 理想情况下,我想做的是查看每个客户每个蜂箱的最新检查,并计算有多少蜂箱死亡,有多少蜂箱存活(基于检查表中“蜂箱强度”字段的值) 这让我困惑了一段时间,我认为这是因为我的代码很可怕,很可能不是最好的方法 我想知道是否有人可以帮助我实现下表: 客户名称|最近检查|活蜂箱总数|死蜂箱总数 这是我的半工作代码(请注意,它和所有罪恶一样丑陋): $ContactsQ=mysq

我有一个包含3个表的数据库(客户、蜂箱、检查) 每次检查只能有一个蜂箱和一个客户。一个客户可以有多个蜂箱,一个蜂箱可以有多个检查)

理想情况下,我想做的是查看每个客户每个蜂箱的最新检查,并计算有多少蜂箱死亡,有多少蜂箱存活(基于检查表中“蜂箱强度”字段的值)

这让我困惑了一段时间,我认为这是因为我的代码很可怕,很可能不是最好的方法

我想知道是否有人可以帮助我实现下表:

客户名称|最近检查|活蜂箱总数|死蜂箱总数

这是我的半工作代码(请注意,它和所有罪恶一样丑陋):

$ContactsQ=mysql\u查询(“
挑选
*
从…起
联络
哪里
`联系人`.`状态`=“活动”
及
`联系人“”。`Type`='Rental'
分组
联系人ID
");
如果(!$ContactsQ){
die('无效查询:'.mysql_error());
} 
回声“;
回声“;
回显“ID”;
呼应“姓名”;
呼应“活蜂箱”;
呼应“死蜂箱”;
回声“上次检查”;
回声“AG”;
回声“;
//针对每位客户//
而($CQ=mysql\u fetch\u assoc($ContactsQ))){
$live=0;
$dead=0;
$CID=$CQ['ContactID'];
$Query=mysql\u查询(“
挑选
最大(`InspectionsNZ`.`Inside`)英寸,
蜂箱。*,
联系人*
从…起
`检查新西兰`
在“联系人”上左键联接“联系人”。“联系人ID”='InspectionsNZ`.`CustomerID`
在'Hives'上左键联接'Hives'。'ID`='InspectionsNZ`.'HiveID``
哪里
`蜂巢`.`状态`=“活动”
和Contacts.ContactID=$CID
分组
`身份证`
");
如果(!$Query){
die('无效查询:'.mysql_error());
} 
//对于客户拥有的每个处于活动状态的配置单元
而($row1=mysql\u fetch\u assoc($Query))){
$HID=$row1['ID'];
$lastInside=$row1['Ins'];
$Query1=mysql\u查询(“
挑选
高强度、日期、内部、客户ID
从…起
检查新西兰
哪里
`Inside`=$lastInside
订购人
`内部`
");
如果(!$Query1){
die('无效查询:'.mysql_error());
} 
//如果活的或死的话,加到总数中
而(($row=mysql\u fetch\u assoc($Query1))){
//获取当前CustomerID//
$nquery=mysql\u查询(“
挑选
最大值(`InspectionsNZ`.`Inside`),
`客户ID`
从…起
`检查NZ`
哪里
`HiveID`=$HID
");
如果(!$nquery){
die('无效查询:'.mysql_error());
}
而($nrow=mysql\u fetch\u assoc($nquery))){
$NCID=$nrow['CustomerID'];
}
//结束获取当前客户ID//
如果($CID==$NCID){
如果($row['HiveStrength']>0){
$live++;
}
    $ContactsQ = mysql_query("
SELECT 
*
FROM 
Contacts
WHERE 
`Contacts`.`Status` = 'Active'
AND 
`Contacts`.`Type` = 'Rental'
GROUP BY
ContactID
");
if (!$ContactsQ) {
    die('Invalid query: ' . mysql_error());
} 
echo "<table class=\"tablesorter\" >";
echo "<thead><tr>";
echo "<th>ID &nbsp&nbsp&nbsp&nbsp</th>";
echo "<th> Name</font></th>";
echo "<th>Live Hives</font></th>";
echo "<th>Dead Hives</font></th>";
echo "<th>Last Inspected</font></th>";
echo "<th>AG</font></th>";
echo "</tr></thead>";   







// For Each Customer//
while(($CQ =  mysql_fetch_assoc($ContactsQ))) {
$live = 0;
$dead = 0;                  
$CID = $CQ['ContactID'];
                    $Query = mysql_query("
                    SELECT 
                    MAX(`InspectionsNZ`.`InsID`) Ins,
                    Hives.* ,
                    Contacts.*
                    FROM
                    `InspectionsNZ`
                    LEFT JOIN `Contacts` ON `Contacts`.`ContactID` = `InspectionsNZ`.`CustomerID`
                    LEFT JOIN `Hives` ON `Hives`.`ID` = `InspectionsNZ`.`HiveID`
                    WHERE
                    `Hives`.`Status` = 'Active'
                    AND Contacts.ContactID = $CID
                    GROUP BY 
                    `ID`
                    ");
                    if (!$Query) {
                                die('Invalid query: ' . mysql_error());
                            } 





                    // For Each Hive the customer has that is active
                    while(($row1 =  mysql_fetch_assoc($Query))) {
                                                                $HID = $row1['ID'];
                                                                $lastinsID = $row1['Ins'];
                                                                $Query1 = mysql_query("
                                                                SELECT 
                                                                HiveStrength, Date, InsID, CustomerID
                                                                FROM 
                                                                InspectionsNZ
                                                                WHERE 
                                                                `InsID` = $lastinsID
                                                                ORDER BY 
                                                                `InsID`
                                                                ");
                                                                if (!$Query1) {
                                                                    die('Invalid query: ' . mysql_error());
                                                                } 






                                                                // Add to total if Alive or Dead
                                                                while(($row =  mysql_fetch_assoc($Query1))) {


                                                                                            //Get current CustomerID//
                                                                                            $nquery = mysql_query("
                                                                                            SELECT 
                                                                                            MAX(`InspectionsNZ`.`InsID`) , 
                                                                                            `CustomerID` 
                                                                                            from 
                                                                                            `InspectionsNZ` 
                                                                                            WHERE 
                                                                                            `HiveID` = $HID
                                                                                            ");
                                                                                            if (!$nquery) {
                                                                                            die('Invalid query: ' . mysql_error());
                                                                                            }
                                                                                            while(($nrow =  mysql_fetch_assoc($nquery))) {
                                                                                                $NCID = $nrow['CustomerID'];
                                                                                            }
                                                                                            //END Get current CustomerID//


                                                                    if ($CID == $NCID){
                                                                    if($row['HiveStrength'] > 0) {
                                                                        $live++;
                                                                    }
                                                                    elseif($row['HiveStrength'] == 0) {
                                                                        $dead++;

                                                                    }
                                                                    }
                                                                    echo $HID." - ".$NCID." - ".$row['CustomerID']." - ".$CID." - ".$lastinsID." - ".$row['Date']."<br/>";

                                                                }


                    }
                    echo "<tr>";
                    echo "<td><h3>" .$CQ['ContactID']. "</h3></td>";
                    echo "<td><a href='CustomerTop.php?cid=" .$CQ['ContactID']. "'>" .$CQ['Name']. "</a></td>";
                    echo "<td><h3>" .$live. "</h3></td>";
                    echo "<td><h3>" .$dead. "</h3></td>";
                    echo "<td><h3>" .$CQ['Date']. "</h3></td>";
                    echo "<td><h3>" .$CQ['RunGroup']. "</h3></td>";

}
echo "</tr>";
echo "</tbody>";
echo "</table><br />";