Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择下一个可用日期并连接到另一个表_Sql - Fatal编程技术网

Sql 选择下一个可用日期并连接到另一个表

Sql 选择下一个可用日期并连接到另一个表,sql,Sql,我正在尝试从一个表中选择下一个可用日期,并将其链接到另一个表 主表是一个产品列表,我有价格大小等列。在第二个表中,我有产品ID、日期列表以及产品是否可用。日期是从过去的某一点到未来的某一点 我想筛选日期,使其大于或等于今天,并显示为可用。然后使用产品信息将下一个可用日期添加到我的主数据集中 表1: 产品ID、产品名称、价格、尺寸 表2: ProductID,日期,可用(0/1) 我尝试将表2左键联接到表1,并使用WHERE to set dates>=将日期设置为今天,并可供1使用 正如其他问题

我正在尝试从一个表中选择下一个可用日期,并将其链接到另一个表

主表是一个产品列表,我有价格大小等列。在第二个表中,我有产品ID、日期列表以及产品是否可用。日期是从过去的某一点到未来的某一点

我想筛选日期,使其大于或等于今天,并显示为可用。然后使用产品信息将下一个可用日期添加到我的主数据集中

表1
产品ID、产品名称、价格、尺寸

表2
ProductID,日期,可用(0/1)

我尝试将表2左键联接到表1,并使用WHERE to set dates>=将日期设置为今天,并可供1使用

正如其他问题回答所建议的那样,我尝试了嵌套的SELECT语句,但结果是,每个不正确的产品ID都链接了相同的日期


非常感谢您的指导。

请尝试以下示例

假设第一个表是包含以下列的产品详细信息

ProductID、产品名称、价格、大小

另一个表是以下列的可用产品

ProductID,日期,可用

请查找查询

select pd.ProductID,pd.ProductName,pd.Price,pd.Size  from Product_Details pd, Available_products pa where pa.ProductID=pd.ProductID and DATE(pa.Dates) >= DATE(NOW()) and pa.Available=1;

这个答案与Raj Paliwal的答案类似,但使用了当前的SQL Server语法

产品表:产品ID、产品名称、价格、大小(主键:产品ID)

ProductDates表格:ProductId,DateStart,IsAvailable(主键:ProductId,DateStart)


注意:在现实世界中,价格可能还与日期和可用性有关。因此,该列将位于ProductDates表中。

示例数据、所需结果和适当的数据库标记都会有所帮助!谢谢你的帮助。我已经应用了上述内容,但问题是我只想看到每个产品ID的第一个可用日期行。例如:ID100 date 28/10/19、ID200 28/10/19、ID300 3/11/19。我不想看到所有可用的日期。我如何才能在未来的第一个可用日期中提取?谢谢,事实上,我想我已经在日期中添加了一个MIN子句:选择a.ProductID,MIN(B.StartDate)作为[date],B.IsAvailable FROM#Product AS a.ProductID=B.ProductID,其中StartDate>=convert(date,getdate())和Available=1 groupby a.PropertyID,B.I可用
SELECT  A.ProductId,
        A.ProductName,
        A.Price,
        A.Size,
        B.DateStart,
        B.IsAvailable
FROM    #Product as A
        INNER JOIN #ProductDates as B
            ON A.ProductId = B.ProductId
WHERE   DateStart >= convert(date, getdate())
    AND IsAvailable = 1

--  Output (where current date is 2019-10-25):
--  ProductId   ProductName         Price   Size    DateStart   IsAvailable
--  ----------- -----------         ------- ------- ----------- -----------
--  100         Sample 100 Product  59.00   16      2019-10-28  1
--  100         Sample 100 Product  59.00   16      2019-11-03  1
--  100         Sample 100 Product  59.00   16      2019-11-05  1
--  100         Sample 100 Product  59.00   16      2019-11-06  1
--  100         Sample 100 Product  59.00   16      2019-11-11  1
--  100         Sample 100 Product  59.00   16      2019-11-12  1
--  100         Sample 100 Product  59.00   16      2019-11-13  1
--  200         Sample 200 Product  12.00   8       2019-10-28  1
--  200         Sample 200 Product  12.00   8       2019-11-03  1
--  200         Sample 200 Product  12.00   8       2019-11-04  1
--  200         Sample 200 Product  12.00   8       2019-11-05  1
--  200         Sample 200 Product  12.00   8       2019-11-06  1
--  200         Sample 200 Product  12.00   8       2019-11-11  1
--  200         Sample 200 Product  12.00   8       2019-11-12  1
--  300         Sample 300 Product  44.23   21.5    2019-11-03  1
--  300         Sample 300 Product  44.23   21.5    2019-11-04  1
--  300         Sample 300 Product  44.23   21.5    2019-11-06  1
--  300         Sample 300 Product  44.23   21.5    2019-11-11  1
--  300         Sample 300 Product  44.23   21.5    2019-11-12  1