gpt4 book ai didi

php - 在 PHP/MySQL 中对符合特定条件的行进行排序

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

我有一个包含 6 个字段的数据库表,其中包含有关餐馆的信息:
编号
姓名
类型
类别_1
类别_2
类别_3

餐厅分为三种“类型”:金牌、银牌和铜牌。金牌餐厅在其所有 3 个类别页面(category_1、category_2 和 category_3)上都有特色。银牌餐厅位列前两个类别(category_1 和 category_2)。铜牌餐厅仅在其第一类 (category_1) 中有特色。在我的类别页面上,我需要显示这些类别中的所有餐厅,但要突出显示有资格成为特色的餐厅(即,它们需要列在顶部)。我不确定如何使用 PHP/MySQL 执行此操作。我可以很好地查询类别中的餐厅,但我如何让它将特色餐厅放在顶部?这是我需要对“墨西哥人”类别执行的操作:

显示所有墨西哥餐馆。推广在其任何类别字段中列出“墨西哥”的金牌餐厅,推广在其前两个类别字段中列出“墨西哥”的银牌餐厅,并推广在其顶级类别字段中列出“墨西哥”的铜牌餐厅。

我一直在想很多不同的方法来做到这一点,但无法弄清楚。

最佳答案

这是一个概念问题。您不应该有三个“category_X”列。相反,您应该有一个单独的表(例如 restaurant_category)。基本上,您的表结构如下所示:

restaurant (restaurant_id, name, type)
restaurant_category (restaurant_id, category_name)

您甚至可以(并且应该)通过创建类别表和类型表来规范化您的表,但是为了这个问题,我假设您不会这样做。然后,您在 restaurant_category 中为青铜餐厅添加一行,为银餐厅添加两行,为金餐厅添加三行,您可以使用如下查询:

    SELECT name
FROM restaurant
INNER JOIN restaurant_category
USING (restaurant_id)
WHERE category_name = 'Mexican'
ORDER BY FIELD(type, 'Gold', 'Silver', 'Bronze'); -- if you had normalized
-- you'd use a column like
-- type_order to order by

关于php - 在 PHP/MySQL 中对符合特定条件的行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7198862/

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