gpt4 book ai didi

php - 如何在两个相关的 PHP MySQL 查询中排序?

转载 作者:可可西里 更新时间:2023-11-01 08:47:00 25 4
gpt4 key购买 nike

我正在根据两个交叉引用的 MySQL 查询的结果创建一个下拉选择表单,但是我无法使列表按字母正确排序。

我正在从第一个表“list1”中获取 ID 号,但需要从第二个表“list2”中获取其名称,并按字母顺序显示它们。

我尝试了 ORDER BY,但实际上这两个查询都没有意义。

    <select name="select">
<?php
$sql = "SELECT DISTINCT id FROM list1";
$query = mysqli_query($connection, $sql) or die (mysqli_error());

while ($row= mysqli_fetch_array($query)) {
$id = $row["id"];
// *** get the ID name from second table ***
$sql2 = "SELECT * FROM list2 WHERE id='$id' ORDER BY name ASC LIMIT 1";
$query2 = mysqli_query($connection, $sql2) or die (mysqli_error());

while ($row2 = mysqli_fetch_array($query2)) {
$name = $row2["name"];
echo '<option value="'.$id.'">'.$name.'</option>';
} // end while

// *** end get name ***

} // end while
?>
</select>

最佳答案

只需将两个查询合并为一个:

select col1, col2 etc
from list2 where list2.id in (SELECT DISTINCT id FROM list1)
order by name asc

这为您提供了与使用查询和后续子查询所获得的列表相同的列表,但一次性完成,您可以根据需要对整个结果进行排序。

<select name="select">
<?php
$sql2 = " select col1, col2 etc
from list2 where list2.id in (SELECT DISTINCT id FROM list1)
order by name asc
";
$query2 = mysqli_query($connection, $sql2) or die (mysqli_error());
while ($row2 = mysqli_fetch_array($query2)) {
$name = $row2["name"];
echo '<option value="'.$id.'">'.$name.'</option>';
} // end while
?>
</select>

请注意,在像这样连接表时,您可能不应该使用 select *。只需选择您想要的列。

关于php - 如何在两个相关的 PHP MySQL 查询中排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26376572/

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