在SQL中,如何在特定条件下使用外键链接两个表?
我想在某些条件下链接两个表。比如拿一个表的产品(itemno、item、qty、price、stauts)和第二个表的链接(Sno、itemno、status)。其中,链接中的itemno和status是引用到产品的外键 问题是:- 我希望表链接仅获取状态为“已售出”而不是“未售出”的产品中的数据。 基本代码如下:-在SQL中,如何在特定条件下使用外键链接两个表?,sql,Sql,我想在某些条件下链接两个表。比如拿一个表的产品(itemno、item、qty、price、stauts)和第二个表的链接(Sno、itemno、status)。其中,链接中的itemno和status是引用到产品的外键 问题是:- 我希望表链接仅获取状态为“已售出”而不是“未售出”的产品中的数据。 基本代码如下:- CREATE TABLE LINK( SNO INT PRIMARY KEY, PRODUCT_ITEMNO INT NOT NUL
CREATE TABLE LINK(
SNO INT PRIMARY KEY,
PRODUCT_ITEMNO INT NOT NULL,
PRODUCT_STATUS CHAR(5) NOT NULL,
FOREIGN KEY ( PRODUCT_ITEMNO,
PRODUCT_STATUS )
REFERENCES PRODUCTS ( ITEMNO,
STATUS ) on update CASCADE ON DELETE RESTRICT;
我应该在这里添加什么来满足我的上述条件。我想你误解了这里的基本情况。创建表格是一回事,与之交互(C创建、R阅读、U更新和D编辑数据)是另一回事 让我们假设您的products表的结构如下所示
创建表格产品(
项目\无INT主键,
项目VARCHAR(20)不为空,
数量SMALLINT无符号非空,
价格小数(8,2)不为空,
状态枚举(“已售出”、“未售出”)不为空
);
要将此链接到what-ever表(在本例中为links
),只需执行以下操作
创建表链接(
s_无INT主键,
产品\u项目\u无整数不为空,
外键(产品项号)
参考产品(项目编号)
关于更新级联
关于删除限制
);
请注意,不需要状态,因为可以通过连接两个表从products表中获取状态
例如,在稍后的时间点发出select查询
例如
从链接l中选择l.*,p.status
左连接产品p上的p.item\u no=l.product\u item\u no
其中p.status=‘已售出’;
我认为您误解了这里的基本内容。创建表格是一回事,与之交互(C创建、R阅读、U更新和D编辑数据)是另一回事
让我们假设您的products表的结构如下所示
创建表格产品(
项目\无INT主键,
项目VARCHAR(20)不为空,
数量SMALLINT无符号非空,
价格小数(8,2)不为空,
状态枚举(“已售出”、“未售出”)不为空
);
要将此链接到what-ever表(在本例中为links
),只需执行以下操作
创建表链接(
s_无INT主键,
产品\u项目\u无整数不为空,
外键(产品项号)
参考产品(项目编号)
关于更新级联
关于删除限制
);
请注意,不需要状态,因为可以通过连接两个表从products表中获取状态
例如,在稍后的时间点发出select查询
例如
从链接l中选择l.*,p.status
左连接产品p上的p.item\u no=l.product\u item\u no
其中p.status=‘已售出’;
这个问题含糊不清,有些自相矛盾。既然您已经有了一个特定于存储状态的列,可以轻松查询所需数据,那么表链接中既有已售出数据又有未售出数据的问题是什么。您好,请提供输入数据和预期输出。这个问题很模糊,有些矛盾。既然您已经有一个特定于存储状态的列,可以方便地查询所需数据,那么表链接中既有已售出数据又有未售出数据会有什么问题。您好,请提供输入数据和预期输出