在SQL中,如何在特定条件下使用外键链接两个表?

在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

我想在某些条件下链接两个表。比如拿一个表的产品(itemno、item、qty、price、stauts)和第二个表的链接(Sno、itemno、status)。其中,链接中的itemno和status是引用到产品的外键

问题是:- 我希望表链接仅获取状态为“已售出”而不是“未售出”的产品中的数据。

基本代码如下:-

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=‘已售出’;

这个问题含糊不清,有些自相矛盾。既然您已经有了一个特定于存储状态的列,可以轻松查询所需数据,那么表链接中既有已售出数据又有未售出数据的问题是什么。您好,请提供输入数据和预期输出。这个问题很模糊,有些矛盾。既然您已经有一个特定于存储状态的列,可以方便地查询所需数据,那么表链接中既有已售出数据又有未售出数据会有什么问题。您好,请提供输入数据和预期输出