gpt4 book ai didi

php - MySQL - 如何根据另一个表中的列进行排序

转载 作者:行者123 更新时间:2023-11-29 06:34:58 27 4
gpt4 key购买 nike

我有这些表:

表“数据”:

| Customer | Category | Brand | Market | A | B |
|==========|==========|=======|========|===|===|
| Bill | 5 | 4 |1 |2 |9 |
| Bill | 5 | 4 |1 |6 |15 |
| Bill | 5 | 4 |1 |1 |30 |
| Greg | 7 | 9 |3 |5 |1 |
| Amy | 9 | 2 |1 |1 |8 |

表'客户':

| Cust | Mkt | SubMkt |
|======|=====|========|
| Bill | 1 | NY |
| Bill | 2 | Arizona|
| Bill | 3 | Cali |
| Greg | 1 | Ohio |
| Amy | 1 | Texas |

表格“排序”:

| SubMarket | SortBy |
|===========|========|
| Cali | A |
| Ohio | B |
| Arizona | A |
| NY | A |

我需要从按几个不同列排序的“数据”中选择所有内容,然后根据其他 2 个表的内容选择 A 或 B。

SELECT *
FROM Data
ORDER BY Customer, Category, Brand, Market, (A or B)

基本上,表 Data 中的 Customer Market 链接到 Cust < strong>和表Customer中的Mkt,然后表Customer中的SubMkt链接到SubMarket 在表 Sort 中。然后表 Sort 中的 SortBy 将是我需要在表 Data 中排序的列。希望这是有道理的。

因此,在上面的示例中,Data 中的所有行都包含 Customer 的“Bill”和 Market 的“1”将按 A 列排序。

我开始用 PHP 编写对象数组,然后根据对象属性对数组进行排序,但这实际上需要对现有代码进行大修。我假设我正在寻找的东西可以通过在 MySQL 中进行相当直接的查询来完成,但我对 MySQL 的了解还不足以编写该查询。任何帮助将不胜感激!

编辑:我应该提一下,这些只是部分表格。我正在使用的实际表格有数千行,每个“子市场”都有一个匹配的“SortBy”。

编辑 2:阐明 Customer Market 需要在表 Data 中链接到 Cust Mkt 在表Customer 中。

最佳答案

这只是一个展示如何连接的答案。Ignacio 应该有公认的答案,因为他首先提供了困难的部分:)

SELECT d.*
FROM data d
JOIN customers c on c.cust = d.customer AND c.mkt = d.market
JOIN sort s on s.submarket = c.submkt
ORDER BY
d.Customer,
d.Category,
d.Brand,
d.Market,
CASE s.sortby
WHEN 'A' THEN d.A
WHEN 'B' THEN d.B
ELSE 9999999
END

关于php - MySQL - 如何根据另一个表中的列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25478480/

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