1

クエリは次のとおりです。

select STOCKS.STOCKNO, STOCKS.DESCRIPTION, ORDERITEMS.QTYORD
from STOCKS
left join ORDERITEMS
on STOCKS.STOCKNO = ORDERITEMS.STOCKNO 
WHERE STOCKNO !=(Select STOCKNO from ORDERITEMS where ORDERNO='1' or ORDERNO='2')
ORDER BY STOCKNO
/

エラーは次のとおりです。

ORA-00918: column ambiguously defined for every stock item.. 

私は結合を行いましたが、最初のクエリに対してではなく、2番目のクエリに対してです

WHERE STOCKNO !=(Select STOCKNO from ORDERITEMS where ORDERNO='1' or ORDERNO='2')

質問は、これまでに注文が行われていない在庫を含め​​、在庫、説明、注文数量を表示することです。

4

3 に答える 3

3

在庫番号は?

WHERE STOCKNO 

またはSTOCKS.STOCKNO_ORDERITEMS.STOCKNO

于 2012-11-30T12:28:31.143 に答える
2

以下のようにエイリアスを使用して、次のものに置き換えてみて!=くださいnot in

select S.STOCKNO, S.DESCRIPTION, O.QTYORD
from STOCKS S
left join ORDERITEMS O on S.STOCKNO = O.STOCKNO 
WHERE S.STOCKNO not in (select O2.STOCKNO  
                        from ORDERITEMS O2 
                        where O2.ORDERNO='1' or O2. ORDERNO='2')
ORDER BY S.STOCKNO
/
于 2012-11-30T12:30:28.817 に答える
0

エイリアスを必ず使用してください。

select 
    s.stockno, 
    s.description, 
    o.qtyord
from stocks s
left join orderitems o
    on s.stockno = o.stockno 
where s.stockno not in ( select stockno from orderitems where orderno in ( '1', '2' ) )
order by s.stockno
;

特に、 を使用する必要がありますwhere s.stockno not in <subquery>

于 2012-11-30T13:50:21.707 に答える