2016-11-07 84 views
-1

我已经表Orders_Header,Order_Sequence,与value.I Orders_Samples想从3个表获得独特的价值:我如何在最小行中获得DISTINCT值? SQL

我有一排Orders_Header:

enter image description here

我有Orders_Sequence 2行: enter image description here

我有4分排在Orders_Samples:

enter image description here

我的SQL代码是:

SELECT orders_header.plant, 
     orders_header.shortyear, 
     orders_header.orderno, 
     orders_header.orderdate, 
     orders_header.closingdate, 
     orders_header.requester, 
     orders_header.projectnumber, 
     orders_header.costcenter, 
     orders_header.batchnumber, 
     orders_header.partname, 
     orders_header.partnumber, 
     orders_header.costcategory, 
     orders_header.status, 
     orders_header.overallproductrating, 
     orders_sequence.activitynumber, 
     orders_sequence.dimension, 
     orders_sequence.description, 
     orders_sequence.activityname, 
     orders_sequence.activityresource, 
     orders_sequence.requirementnom, 
     orders_sequence.requirementplus, 
     orders_sequence.requirementminus, 
     orders_sequence.units, 
     orders_samples.samplenumber, 
     orders_samples.samplevalue 
FROM orders_header 
     INNER JOIN orders_sequence 
       ON orders_header.orderid = orders_sequence.orderid 
     INNER JOIN orders_samples 
       ON orders_samples.orderid = orders_sequence.orderid 
WHERE (orders_header.orderno = 79148) 
     AND (orders_header.shortyear = 16) 

为什么我得到的4 8行istead,我想唯一行。我有4行Orders_Samples我想在最后4行与所有日期。

我尝试用不同的但不工作

注*我试着用不同的,但不工作

感谢

+0

8行是否以任何方式重复? (如4组2)如果没有连接或合并样本和序列,那么您可能获得(1x2x4)。 – StingyJack

+0

查询的输出应该解释什么?像“这是这个订单的最后一个样品和序列?” – StingyJack

回答

0

如何:

select orders_header.plant, ... 

FROM orders_header 

inner join (select distinct orderid from orders_sequence) ord_sequence 
on orders_header.orderid = ord_sequence.orderid 
inner join orders_samples ON orders_samples.orderid = ord_sequence.orderid 
+0

Nop,不起作用,数据绑定所有列 – Vladut

0

试试这个,

SELECT orders_header.plant, 
    orders_header.shortyear, 
    orders_header.orderno, 
    orders_header.orderdate, 
    orders_header.closingdate, 
    orders_header.requester, 
    orders_header.projectnumber, 
    orders_header.costcenter, 
    orders_header.batchnumber, 
    orders_header.partname, 
    orders_header.partnumber, 
    orders_header.costcategory, 
    orders_header.status, 
    orders_header.overallproductrating, 
    orders_sequence.activitynumber, 
    orders_sequence.dimension, 
    orders_sequence.description, 
    orders_sequence.activityname, 
    orders_sequence.activityresource, 
    orders_sequence.requirementnom, 
    orders_sequence.requirementplus, 
    orders_sequence.requirementminus, 
    orders_sequence.units, 
    orders_samples.samplenumber, 
    orders_samples.samplevalue 
FROM orders_samples 
    LEFT JOIN orders_sequence 
      ON orders_samples.orderid = orders_sequence.orderid 
    LEFT JOIN orders_header 
      ON orders_header.orderid = orders_sequence.orderid 
WHERE (orders_header.orderno = 79148) 
    AND (orders_header.shortyear = 16) 
+0

Nop,不起作用,相同的值 – Vladut

0

从此最小查询开始并添加字段,直至找到导致重复的字段。

SELECT 
    oh.order_id 
    osam.samplenumber, 
    osam.samplevalue, 
    oseq.activitynumber 
FROM orders_samples osam 
    INNER JOIN orders_header oh 
    ON osam.order_id = oh.order_id 
    LEFT JOIN orders_sequence oseq 
    ON oh.order_id = oseq.order_id 
WHERE (oh.orderno = 79148) 
AND (oh.shortyear = 16) 
+0

Nop,同样,我给8行 – Vladut

相关问题