【发布时间】:2020-08-05 15:49:45
【问题描述】:
我的数据库中有两张表,一张包含项目,另一张包含票证。我想要每个项目的第一张票。 表项目有:
- AAA
- BBB
- CCC
桌票有:
- AAA-1
- AAA-2
- BBB-2
- BBB-3
- CCC-100
- CCC-101
我想要的是每个项目中最小票证的列表,因此结果应该是 AAA-1、BBB-2、CCC-101。单独使用sql可以吗?我需要一个函数吗? 我一直在尝试使用 min 和 joins,但我无法正确混合它们......
谢谢
【问题讨论】:
-
首先,您应该将
CCC-101等值分隔在两列中:“CCC”(VARCHAR)和101(NUMERIC)。在数据库中执行此操作。那么查询就变得很简单了。 -
这两个表有什么关系?票证表不应该有一列存储项目ID吗?
-
这不是链接这两个实体的可取方式。 Project 应该是 Ticket 表上的外键。
-
我把这样的信息更简单,但门票表门票分为varchar和数字。正如其他人所说,他们通过 ID 与项目相关。我不认为这些信息是相关的。将它放在两列中如何变得更简单(因为我已经在我的数据库中拥有它,所以我认为这很重要)