首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个与MySQL相关的PHP查询中进行排序?

如何在两个与MySQL相关的PHP查询中进行排序?
EN

Stack Overflow用户
提问于 2014-10-15 07:13:26
回答 1查看 120关注 0票数 3

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

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

我尝试了ORDER,但这在这两个查询中都没有意义。

代码语言:javascript
复制
    <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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-15 07:14:54

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

代码语言:javascript
复制
select col1, col2 etc
from list2 where list2.id in (SELECT DISTINCT id FROM list1)
order by name asc

这给出了使用查询和后续子查询的相同列表,但如果一次执行,您可以根据需要对整个结果进行排序。

代码语言:javascript
复制
<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 *。选你想要的栏目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26376572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档