gpt4 book ai didi

php - 正确显示mySQL一对多查询结果

转载 作者:行者123 更新时间:2023-11-29 03:12:12 25 4
gpt4 key购买 nike

我有两个表:

      TRIPS
-----------------
tripID | clientID

              LEGS
--------------------------------
legID | depart | arrive | tripID

TRIPS 与 LEGS 具有一对多的关系,因为每个 tripID 有多个 legID。我需要以下列格式显示它们:

Trip tripID1:
Leg legID1: depart1 - arrive1
Leg legID2: depart2 - arrive2

Trip tripID2:
Leg legID3: depart3 - arrive3
Leg legID4: depart4 - arrive4

etc...

我已经能够通过 WHILE() 循环遍历 legID,但是我在 TRIPS 循环中嵌入 LEGS 循环时遇到了问题。我的查询是:

<?php
$legsQuery = "SELECT trips.tripID, legs.depart, legs.arrive FROM legs, trips WHERE `trips`.tripID = `legs`.tripID";
$legsQueryResult = mysql_query($legsQuery) or die("QUERY LEG ERROR: " . mysql_error());
while($row = mysql_fetch_assoc($legsQueryResult)) {
print_r($row);
}
?>

最佳答案

  1. 添加order by子句以按行程ID排序
  2. 创建 $lastTripID 变量以检查何时从“新行程”获得“腿”
  3. [推荐]使用join从多个表中选择数据

代码:

<?php
$legsQuery = "
select
trips.tripID,
legs.depart,
legs.arrive
from
legs
inner join trips on trips.tripID = legs.tripID
order by
trips.tripID
";
$legsQueryResult = mysql_query($legsQuery) or die("QUERY LEG ERROR: " . mysql_error());
$lastTripID = null;
while ($row = mysql_fetch_assoc($legsQueryResult)) {
if ( $row['tripID'] !== $lastTripID ) {
echo $row['tripID'], "\n";
$lastTripID = $row['tripID'];
}
print_r($row);
}

关于php - 正确显示mySQL一对多查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6358902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com