首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP/MySQL中对符合特定条件的行进行排序

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

Stack Overflow用户
提问于 2011-08-26 08:39:50
回答 3查看 465关注 0票数 1

我有一个包含6个字段的数据库表,其中包含有关餐馆的信息:

id

名字

类型

category_1

category_2

category_3

有三种“类型”的餐厅:金色,白银色和青铜色。黄金餐厅在所有3个分类页面(category_1,category_2和category_3)上都有特色。银色餐厅在他们的前两个类别(category_1和category_2)上都有特色。青铜餐厅只在他们的第一类(category_1)上有特色。在我的类别页面上,我需要显示这些类别中的所有餐厅,但功能谁的餐厅有资格成为特色(即,他们需要在顶部列出)。我不确定如何使用PHP / MySQL来做到这一点。我可以很好地查询分类中的餐厅,但我如何告诉它将特色餐厅放在顶部?这就是我需要在“墨西哥”类别上做的事情:

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

我一直在想许多不同的方法来做这件事,但还是想不出来。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-26 09:06:49

这应该可以帮助您解决现有的表结构问题。

我假设这个查询中的type包含bronzesilvergold

代码语言:javascript
复制
SELECT * FROM restaurants 
WHERE category_1 = 'Mexican' 
  OR (category_2 = 'Mexican' AND type in ('silver','gold'))
  OR (category_3 = 'Mexican' AND type = 'gold')
ORDER BY Field(type,'gold','silver','bronze'), name asc;
票数 0
EN

Stack Overflow用户

发布于 2011-08-26 09:07:17

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

代码语言:javascript
复制
restaurant (restaurant_id, name, type)
restaurant_category (restaurant_id, category_name)

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

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

Stack Overflow用户

发布于 2011-08-26 09:07:02

通过以下方式将此添加到您的订单中:

代码语言:javascript
复制
ORDER BY FIELD(type,"gold","silver","bronze")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7198862

复制
相关文章

相似问题

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