术语我是做一对多还是多对多?左连接?对?

时间:2015-12-25 22:23:53

标签: sql join

我需要对此进行研究,但对我应该研究的术语感到困惑。

表1字段:

salenumber  
category    
quantity    
price

表2字段:

field   
category    
requirement

表3字段:

field   
salenumber  
value

我需要结合这些。

基本上一个(销售数量,类别,数量,价格)可以有一个动态数量的"字段"包含与之关联的唯一"数据。关于我在这里所做的事情的术语,我有点困惑。我和左右连接以及多个到一个以及多个到多个数据库混在一起。如果我只是知道我想要做的术语,那将有助于我缩小研究范围。

2 个答案:

答案 0 :(得分:0)

这可能有助于理解联接:http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

如果Table_A中有一行包含一些ID,并且Table_B中的多行与该ID相关,则可以执行LEFT OUTER JOIN(通常只是LEFT JOIN)。这会将Table_A中的数据与Table_B相匹配 - 但您将拥有与Table_B中一样多的行!

如果您想要在一行中与Table_B行相关的所有Table_A数据,则需要一个聚合函数。在SQL中,这通常类似于array_agg。执行此操作时,您需要告诉它GROUP BY的内容,在我的示例中,Table_A.id

答案 1 :(得分:0)

联接用于查询 - 您运行该查询以查找数据库中的特定记录。你还没有。首先,您要进行表设计,这是您考虑多对多和一对多关系的地方。

首先考虑表格代表什么。例如,单次销售可能涉及多种不同的产品(例如,您购买叉子,勺子,刀子和新车)。每种产品可以属于不同的类别(在这种情况下为器具或机动车辆)。在表格设计中,您将决定产品是属于单个类别还是属于多个类别。

我们假设每个产品只有一个类别 - 那么你可以在一个类别中拥有许多产品(叉子,勺子和刀子都是器具),但产品只能有一个类别。在这种情况下,“产品类别”是一对多关系。

这些连接是如何连接表中的相关字段的 - 这样在Product表中你有'Category',它引用了Category表('Fork'属于Category'Utensil',并且在Category中table'Utensil'是一个附加信息的条目。)

您可能希望查找一些基本的数据库课程来帮助您。有一些很好的免费在线课程和资源 - 只需搜索有关数据库的信息。