gpt4 book ai didi

新手的MySQL数据库建模问题

转载 作者:行者123 更新时间:2023-11-29 15:10:36 25 4
gpt4 key购买 nike

好吧,我有一个问题,我已经在网上搜索了很多解决方案,但找不到任何线索,就是这样(哦,我对这个数据库很陌生;-)

假设我有数千家零售店,每家可以销售 1 到 100 种产品,但有 10,000 种可能的产品可供选择。我需要每个店主都能够查看(并编辑)其商店中的产品列表 - 这很简单,我可以找出其表结构 - 但我还想做的是能够找到商店中最常见的产品组合,例如我想看到类似的内容:

120: pid34, pid234, pid876, pid120, pid100118: pid45, pid54, pid657, pid763, pid237115: pid23, pid546, pid657, pid543, pid23

其中第一个数字是拥有这些产品的商店数量(商店内产品的顺序无关紧要),pid 数字是产品的产品 ID(除了记住最多可以有 100 个产品)每个商店)。

因此,如果我设置一个表:

ID, PID,    Store ID1,  pid34,  102,  pid234, 103,  pid876, 104,  pid120, 105,  pid100, 106,  pid45,  45... etc ...

我可以跟踪我的商店库存,但我不知道如何进行“组合”搜索,请帮忙!

最佳答案

您应该能够使用数据库查询解决大部分问题,但您仍然需要另一种围绕该查询的编程语言(例如 java 和 JDBC)。假设您正在使用某种 SQL 数据库。从您的结构来看,我认为您将需要使用 group by 子句。虽然我不知道你的数据库结构,因为你没有提到它,所以我将为此说你的表称为“产品”

我们首先设计一个查询来获取每种产品的编号:

SELECT pid, COUNT(*) AS NUM FROM products p GROUP BY pid ORDER BY NUM DESC;

所以这个查询将返回如下内容:

pid,    NUM
pid34 120
pid29 120
pid20 20

所以,这已经越来越接近了,但仍然不是我们想要的。然而,现在通过将查询与编程语言结合使用,事情就可以轻松完成。我在下面编写了一些java代码作为示例。

// Assumes that database connection has already been made and is in the variable: conn1
Statement stmt1 = conn1.createStatement();
ResultSet rs1 = stmt1.executeQuery("SELECT pid, COUNT(*) AS NUM FROM products p GROUP BY pid ORDER BY NUM DESC");

int prevNum = -1;
while(rs1.next())
{
int thisNum = rs1.getInt("NUM");
if(thisNum != prevNum)
{
// this means it is a different number than the last result, start a new line
system.out.print("\n" + thisNum + ": ");
prevNum = thisNum;
}
system.out.print(rs1.getString("pid") + ", ");
}
stmt1.close();
conn1.close();

虽然我的逻辑可能不正确,尤其是在格式化方面,但这应该会让您走上正确的道路,知道您需要如何去做。实际上,这个问题需要通过使用查询和编程语言的组合来解决。

查询可以解决一小部分问题,但是它们在解决这些问题方面做得非常好,而编程语言可以解决更广泛的问题。然而,在许多情况下,编程语言在解决相同问题时不如数据库那么高效,这就是为什么将两者多次结合可以非常高效地解决复杂问题的原因。

关于新手的MySQL数据库建模问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628665/

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