问题描述
我有 4 张桌子。
- 乘客桌
passenger_id | 乘客姓名 |
---|---|
1 | 杰斐逊 |
2 | 约翰 |
- 关税表
tariff_id | tariff_pickup | tariff_dropoff | 关税_价格 |
---|---|---|---|
1 | 布拉干 | 马尼拉 | 2000 |
2 | 马尼拉 | NAIA | 1000 |
3 | NAIA | 世纪公园 | 1000 |
- 行程表
trip_id | tariff_id |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
- arrangement_transportation 表
transportation_id | trip_id | passenger_id | transportation_isCancelled |
---|---|---|---|
1 | 1 | 1 | 错误 |
2 | 2 | 1 | 错误 |
3 | 3 | 1 | 错误 |
4 | 2 | 2 | 错误 |
5 | 1 | 2 | 错误 |
现在,我想获取所有行程和特定乘客的费用,其中 transport_isCancelled 为 False。价格将除以乘客总数。
预期结果:
乘客:杰斐逊
取件 | 下车 | 价格 |
---|---|---|
布拉干 | 马尼拉 | 1000 |
马尼拉 | NAIA | 500 |
NAIA | 世纪公园 | 1000 |
总计 | 2500 |
这是我的代码:
<?PHP
$query = "SELECT * FROM arrangement_transportation
LEFT JOIN trip ON trip.trip_id = arrangement_transportation.trip_id
LEFT JOIN tariff ON tariff.tariff_id = trip.tariff_id
LEFT JOIN passenger ON passenger.passenger_id = arrangement_transportation.passenger_id
WHERE arrangement_transportation.passenger_id = 1 AND
arrangement_transportation.transportation_isCancelled = 'False' ";
$statement = $connect->prepare($query);
$statement->execute();
$count = $statement->rowCount();
$output = '';
if ($count > 0)
{
$result = $statement->fetchAll();
$output .= '<table>
<thead>
<tr>
<th>Pick-Up</th>
<th>Drop-Off</th>
<th>Price</th>
</tr>
</thead>
<tbody>';
foreach($result as $row)
{
$trip_id = $row["trip_id"];
$pickup = $row["tariff_pickup"];
$dropoff = $row["tariff_dropoff"];
$price = $row["tariff_price"];
$passenger= $row["passenger_name"];
$queryCount = "
SELECT * FROM arrangement_transportation
WHERE trip_id = '".$trip_id."' AND transportation_isCancelled = 'False'
";
$statementCount = $connect->prepare($queryCount);
$statementCount->execute();
$countPassenger = $statementCount->rowCount();
$newPrice = $price/$countPassenger;
$output .= '<tr>
<td>'.$pickup.'</td>
<td>'.$dropoff.'</td>
<td>'.$newPrice .'</td>
</tr>';
}
$output .= '<tr>
<td colspan="2">TOTAL</td>
<td>????????</td>
</tr>';
$output .= '</tbody></table>';
}
?>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)