Sql 需要一个表中的记录,但需要另一个表中的列

Sql 需要一个表中的记录,但需要另一个表中的列,sql,ms-access,Sql,Ms Access,我正在尝试创建一个查询,该查询将只返回一个表中所有行的表,当前今日未结订单,但返回当前今日未结订单表中每个记录截至昨天的发货日期。我不希望昨天的未结订单有多余的记录。但是,现在由于我的连接或其他原因,它返回了我假设的不正确的行数 对于如何仅从当前今日未结订单表中返回记录,但仍然从昨日未结订单中返回截至昨日的发货日期,我们将不胜感激 以下是我的查询的SQL代码: SELECT [Current Open Orders Today].[Customer Code], [Current

我正在尝试创建一个查询,该查询将只返回一个表中所有行的表,
当前今日未结订单
,但返回
当前今日未结订单
表中每个记录截至
昨天的发货日期。我不希望昨天的未结订单有多余的记录。但是,现在由于我的连接或其他原因,它返回了我假设的不正确的行数

对于如何仅从
当前今日未结订单
表中返回记录,但仍然从
昨日未结订单
中返回截至昨日的发货日期,我们将不胜感激

以下是我的查询的SQL代码:

SELECT [Current Open Orders Today].[Customer Code], 
       [Current Open Orders Today].[Customer Name], 
       [Current Open Orders Today].[Sales Order Number], 
       [Current Open Orders Today].[Input By], 
       [Current Open Orders Today].[Customer PO Number], 
       [Current Open Orders Today].[Date Received], 
       [Current Open Orders Today].[Date Entered], 
       [Current Open Orders Today].[Date Required], 
       [Current Open Orders Today].[Date Promised], 
       [Current Open Orders Today].[Ship Date as of Today],
       [Open Orders From Yesterday].[Ship Date] AS [Ship Date from Yesterday], 
       [Current Open Orders Today].WAREHOUSE, 
       [Current Open Orders Today].Product, 
       [Current Open Orders Today].Alpha, 
       [Current Open Orders Today].Description, 
       [Current Open Orders Today].[Long Description], 
       [Current Open Orders Today].[Order Quantity], 
       [Current Open Orders Today].[Order Value], 
       [Current Open Orders Today].[Customer Analysis], 
       [Current Open Orders Today].Territory, 
       [Current Open Orders Today].Engineer, 
       [Current Open Orders Today].[Analysis Code 5], 
       [Current Open Orders Today].[Industrial Class], 
       [Current Open Orders Today].Region, 
       [Current Open Orders Today].Status
FROM [Current Open Orders Today] 
INNER JOIN [Open Orders From Yesterday] 
   ON ([Current Open Orders Today].[Sales Order Number] = [Open Orders From Yesterday].[Sales Order Number]) 
  AND ([Current Open Orders Today].Product = [Open Orders From Yesterday].Product);

您将所有今天的订单与所有昨天的订单合并

不使用连接部件生成命令

select
    today.*
    , (select top 1 yesterday.[ship_date] 
        from [yesterday open orders] 
        where yesterday.order number = today.order number 
        and yesterday.product code = today.product code)
from
    [current open orders today]

您将所有今天的订单与所有昨天的订单合并

不使用连接部件生成命令

select
    today.*
    , (select top 1 yesterday.[ship_date] 
        from [yesterday open orders] 
        where yesterday.order number = today.order number 
        and yesterday.product code = today.product code)
from
    [current open orders today]

尝试
左联接
,这样它将从
[今天的当前未结订单]
中选择所有行,并且只从
[昨天的未结订单]
中选择匹配的行

SELECT C.[Customer Code], 
       C.[Customer Name], 
       C.[Sales Order Number], 
       C.[Input By], 
       C.[Customer PO Number], 
       C.[Date Received], 
       C.[Date Entered], 
       C.[Date Required], 
       C.[Date Promised], 
       C.[Ship Date as of Today],
       O.[Ship Date] AS [Ship Date from Yesterday], 
       C.WAREHOUSE, 
       C.Product, 
       C.Alpha, 
       C.Description, 
       C.[Long Description], 
       C.[Order Quantity], 
       C.[Order Value], 
       C.[Customer Analysis], 
       C.Territory, 
       C.Engineer, 
       C.[Analysis Code 5], 
       C.[Industrial Class], 
       C.Region, 
       C.Status
FROM [Current Open Orders Today] C
LEFT JOIN [Open Orders From Yesterday] O
   ON (C.[Sales Order Number] = O.[Sales Order Number]) 
  WHERE O.[Ship Date] = getdate() - 1 /*Gets All records from Yeterday's date*/
  AND (C.Product = O.Product);

尝试
左联接
,这样它将从
[今天的当前未结订单]
中选择所有行,并且只从
[昨天的未结订单]
中选择匹配的行

SELECT C.[Customer Code], 
       C.[Customer Name], 
       C.[Sales Order Number], 
       C.[Input By], 
       C.[Customer PO Number], 
       C.[Date Received], 
       C.[Date Entered], 
       C.[Date Required], 
       C.[Date Promised], 
       C.[Ship Date as of Today],
       O.[Ship Date] AS [Ship Date from Yesterday], 
       C.WAREHOUSE, 
       C.Product, 
       C.Alpha, 
       C.Description, 
       C.[Long Description], 
       C.[Order Quantity], 
       C.[Order Value], 
       C.[Customer Analysis], 
       C.Territory, 
       C.Engineer, 
       C.[Analysis Code 5], 
       C.[Industrial Class], 
       C.Region, 
       C.Status
FROM [Current Open Orders Today] C
LEFT JOIN [Open Orders From Yesterday] O
   ON (C.[Sales Order Number] = O.[Sales Order Number]) 
  WHERE O.[Ship Date] = getdate() - 1 /*Gets All records from Yeterday's date*/
  AND (C.Product = O.Product);

滚动几天。您应该将查询分解,以便能够实际读取:PShow us示例数据和预期结果。请阅读,这里是一个学习如何提高问题质量和获得更好答案的好地方。感谢编辑JaydipJ!非常感谢尝试使您的查询更简单。你不需要包括所有的字段并尝试使用alias;他们需要这些信息,所以我不能减少字段。滚动几天。您应该将查询分解,以便能够实际读取:PShow us示例数据和预期结果。请阅读,这里是一个学习如何提高问题质量和获得更好答案的好地方。感谢编辑JaydipJ!非常感谢尝试使您的查询更简单。你不需要包括所有的字段并尝试使用alias;他们需要这些信息,所以我不能减少字段。我以前尝试过左连接,但它仍然没有返回正确的行数;还是太多了。我今天只需要当前未结订单中的行,不需要其他表中多余的行。我只需要另一个表中截至昨天的发货日期与今天当前未结订单的记录相匹配。我以前尝试过left join,但它仍然没有返回正确的行数;还是太多了。我今天只需要当前未结订单中的行,不需要其他表中多余的行。我只需要另一个表中截至昨天的发货日期与当前未结订单的记录相匹配。