【问题标题】:Selecting Distinct Values from Three Inner Join Tables从三个内连接表中选择不同的值
【发布时间】:2014-04-10 06:47:04
【问题描述】:

我有三个表Order_InventoryOrder_ListTrack_Order。 当我在这里执行相同的查询时,我在我的 gridView 中获得了相同订单 ID 的复制值。 我想获得不同的价值观。附件是我的查询和数据库值的快照。

根据Order_Id查询订单跟踪:

SELECT
  Shopping_Order_List.Order_ID AS Order_ID, Shopping_Order_List.Product_ID,
  Shopping_Order_List.Product_Name, Shopping_Order_List.Order_Product_Quantity,
  Shopping_Order_List.Order_Discount, Shopping_Order_List.Order_Price,
  Shopping_TrackOrder.Track_ID, Shopping_TrackOrder.Status, Shopping_TrackOrder.Remarks
FROM Shopping_Order_Inventory
  INNER JOIN
    Shopping_Order_List ON Shopping_Order_Inventory.Order_ID = Shopping_Order_List.Order_ID
  INNER JOIN
    Shopping_TrackOrder ON Shopping_Order_Inventory.Order_ID = @OrderID

结果:

Track_ID  Product_ID  Product_Name  Status  Remarks         Order_ID
1         1           Nexus         False   Not Assembled   4
4         1           Nexus         True    Deliverd        4
7         1           Nexus         False   Stock Incoming  4
8         1           Nexus         False   Stock Incoming  4
1         2           Galaxy Young  False   Not Assembled   4
4         2           Galaxy Young  True    Deliverd        4
7         2           Galaxy Young  False   Stock Incoming  4
8         2           Galaxy Young  False   Stock Incoming  4
1         3           Galaxy S3     False   Not Assembled   4
4         3           Galaxy S3     True    Deliverd        4
7         3           Galaxy S3     False   Stock Incoming  4
8         3           Galaxy S3     False   Stock Incoming  4

如您所见,我有相同订单 ID 的重复值

【问题讨论】:

  • 那么,当每个订单只需要 1 行时,您想要哪些备注,First 或 Last?
  • 也请分享您的预期输出。
  • 你在吗?还是自己找到解决方案?

标签: sql inner-join


【解决方案1】:

最后一个JOINed表没有链接链接

应该是

SELECT
...
FROM Shopping_Order_Inventory
  INNER JOIN
    Shopping_Order_List ON Shopping_Order_Inventory.Order_ID = Shopping_Order_List.Order_ID
  INNER JOIN
    Shopping_TrackOrder ON Shopping_Order_Inventory.Order_ID = @OrderID 
                        AND Shopping_Order_Inventory.Order_ID =Shopping_Order_Inventory.Order_ID

【讨论】:

    【解决方案2】:

    您有多个跟踪记录,一个订单的相同备注是否正确?

    因此,要获得不同的行,您不应选择 track id 并使用 distinct 关键字来获得不同的行。

    SELECT DISTINCT
      Shopping_Order_List.Order_ID AS Order_ID, Shopping_Order_List.Product_ID,
      Shopping_Order_List.Product_Name, Shopping_Order_List.Order_Product_Quantity,
      Shopping_Order_List.Order_Discount, Shopping_Order_List.Order_Price,
      Shopping_TrackOrder.Status, Shopping_TrackOrder.Remarks
    FROM Shopping_Order_Inventory
      INNER JOIN
        Shopping_Order_List ON Shopping_Order_Inventory.Order_ID = Shopping_Order_List.Order_ID
      INNER JOIN
        Shopping_TrackOrder ON Shopping_Order_Inventory.Order_ID = @OrderID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-08
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2012-10-02
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多