gpt4 book ai didi

php - 按列值对 mySQL 结果进行排序

转载 作者:行者123 更新时间:2023-11-29 18:04:51 24 4
gpt4 key购买 nike

Example

引用附图“示例”中的表格。

我们的卡丁车赛车俱乐部使用电子商务软件进行在线注册。每个注册在coCartID列中都有一个唯一的编号。然后,所有注册详细信息(车手姓名、卡丁车编号等)与选项具有同等地位,因此它们都出现在同一列 coCartOption 中,并由 coCartOption 中的标题标识。 em>coOptID 列。

我设法显示最新注册的排序列表:

$sql = "
SELECT coCartID, coOptGroup, coCartOption, coOptID
FROM cartoptions
WHERE coCartID > 2200 AND (coOptGroup = '*Driver Name:' OR coOptGroup = '*1st Class - $85:' OR coOptGroup = '1st Class - $100:' OR coOptGroup = '*1st Class Kart #:' OR coOptGroup = '1st Transponder #:' OR coOptGroup = '2nd Class - $25:' OR coOptGroup = '2nd Class Kart #:' OR coOptGroup = '2nd Transponder #:')
ORDER BY coCartID ASC, coOptID DESC
";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["coOptGroup"] . $row["coCartOption"] . "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>

使用上面的代码,信息显示在每行之间有中断,我只能通过将coOptID设置为升序或降序来控制顺序:

卡里·希尔维格
33
高级世界方程式
阿曼·康奈尔
9193664
100cc大师
99
弗雷德·布劳维尔特
高级世界方程式
77

问题 1:如何将具有相同 coCartID 的所有条目合并并显示在一行中。我在 fetch_assoc、fetch_array 和 fetch_row 上度过了几个令人沮丧的小时,但无论如何我都无法将中断放置在正确的位置:

Kari Hillwig,高级世界方程式赛车手,33 岁
阿曼·康奈尔 (Arman Cornell),100cc 大师级,99 岁,9193664
Fred Blauvelt,高级世界方程式赛车手,77 岁

问题 2:除了 ASC 或 DESC 之外,是否可以按特定顺序对 coOptID 数据进行排序? (如果是这样,我可以按相同的顺序显示相应的coCartOption数据)。

提前谢谢您,

最佳答案

您可以使用以下查询来按行获取固定编号的每个 coCartID 的数据。 coOptGroup(s)

SELECT coCartID,
MAX(CASE WHEN coOptGroup = '*Driver Name:' THEN coCartOption ELSE NULL END) DriverName,
MAX(CASE WHEN coOptGroup IN('*1st Class - $85:','1st Class - $100:' ) THEN coCartOption ELSE NULL END) 1stClass,
MAX(CASE WHEN coOptGroup = '*1st Class Kart #:' THEN coCartOption ELSE NULL END) 1stClassKart,
MAX(CASE WHEN coOptGroup = '1st Transponder #:' THEN coCartOption ELSE NULL END) 1stClassTransponder,
MAX(CASE WHEN coOptGroup ='2nd Class - $25:' THEN coCartOption ELSE NULL END) 2ndClass,
MAX(CASE WHEN coOptGroup = '2nd Class Kart #:' THEN coCartOption ELSE NULL END) 2ndClassKart,
MAX(CASE WHEN coOptGroup = '2nd Transponder #:' THEN coCartOption ELSE NULL END) 2ndClassTransponder
FROM cartoptions
WHERE coCartID > 2200
AND (coOptGroup = '*Driver Name:'
OR coOptGroup = '*1st Class - $85:'
OR coOptGroup = '1st Class - $100:'
OR coOptGroup = '*1st Class Kart #:'
OR coOptGroup = '1st Transponder #:'
OR coOptGroup = '2nd Class - $25:'
OR coOptGroup = '2nd Class Kart #:'
OR coOptGroup = '2nd Transponder #:'
)
GROUP BY coCartID
ORDER BY coCartID ASC

DEMO

当您执行上述查询时,您将在 $row 中获得与单个 coCartID 相关的所有值,例如 $row["DriverName"]$row['1stClass'] ...在每次循环迭代中

关于php - 按列值对 mySQL 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47974684/

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