0

ここには、1 つのクエリにする必要がある 2 つの個別のクエリがあります。クエリを投稿してから、何をしようとしているのかを説明します。

SELECT Distinct I.ITMCDE, V.VNDRCDE, V.VNAME
  FROM (SELECT RIGHT(Items.[Item Number], 3) as ITMCDE FROM Items) I, 
       (SELECT LEFT(Vendors.[Vendor ID], 3) as VNDRCDE, 
               Vendors.[Vendor Name] as VNAME
          FROM Vendors) V
 WHERE I.ITMCDE = V.VNDRCDE

この最初の例では、単純にベンダー コードとアイテム コードを照合して、アイテムを生産するベンダー名を取得します。

SELECT DISTINCT (Items.[Item Description]), ItemQuantities.[QTY Available],
       Items.[Selling U Of M], Items.[Item Number] 
  FROM ItemQuantities 
 INNER JOIN Items ON ItemQuantities.[Item Number] = Items.[Item Number] 
 WHERE Items.[Item Number] LIKE 'WH%'
   AND Items.[Item Number] NOT LIKE '%RMW'

この 2 番目のものでは、2 つの別々の表から入手可能な商品の説明と数量を選択しています (入手可能な数量は別の表にあり、商品番号を使用して一致させます)。

ご覧のとおり、3 つのテーブル間の唯一の相関関係は項目番号であり、vendors テーブルの相関関係はありません。アイテム番号の最後の 3 文字は、ベンダー ID の最初の 3 文字と相関しています... この設定は私が設計したものではありません。私はちょうど今それを操作しようとしています。

これら 2 つのステートメントを 1 つのステートメントに結合して、ベンダー名、アイテムの説明、測定単位 (M の販売単位)、およびアイテムの説明が一意であるアイテムの数量を得るにはどうすればよいですか?

4

3 に答える 3

0

@sgeddes ありがとうございます。

これが私が思いついたものです

SELECT DISTINCT
            Item.ITEMNMBR AS [Item Number], 
            Item.ITEMDESC AS [Item Description], 
            Item.ITMGEDSC AS [Item Category], 
            Item.SELNGUOM AS [Unit of Measure], 
            (SELECT VENDNAME FROM PM00200 WHERE (VENDORID = IV00103.VENDORID)) AS [Vendor Name], 
            (CASE WHEN Quan.QTYONHND > 0 THEN 'In Stock' ELSE 'Out of Stock' END) AS [Stock Status]
FROM       IV00101 AS Item INNER JOIN
                      IV00102 AS Quan ON Item.ITEMNMBR = Quan.ITEMNMBR INNER JOIN
                      IV00103 ON Item.ITEMNMBR = IV00103.ITEMNMBR AND Quan.ITEMNMBR = IV00103.ITEMNMBR
WHERE     (Item.ITEMNMBR LIKE 'WH%') AND (IV00103.VENDORID NOT LIKE '%MIL')

于 2013-02-22T00:23:40.927 に答える
0

私はこれがうまくいくと思います:

SELECT DISTINCT Items.[Item Description], 
       ItemQuantities.[QTY Available],
       Items.[Selling U Of M], 
       Items.[Item Number], 
       V.VNAME
FROM ItemQuantities 
   INNER JOIN Items ON ItemQuantities.[Item Number] = Items.[Item Number] 
   INNER JOIN Vendors ON 
       RIGHT(Items.[Item Number], 3) = LEFT(Vendors.[Vendor ID], 3)
WHERE Items.[Item Number] LIKE 'WH%'
       AND Items.[Item Number] NOT LIKE '%RMW'
于 2013-02-21T14:21:08.533 に答える
0

あなたはそれに参加することができます:

SELECT DISTINCT (i.[Item Description]), iq.[QTY Available],
       i.[Selling U Of M], i.[Item Number],
       V.VNDRCDE, V.VNAME
FROM ItemQuantities iq INNER JOIN
     Items i
     ON iq.[Item Number] = i.[Item Number] left outer join
     Vendors v
     on LEFT(v.[Vendor ID], 3) = RIGHT(i.[Item Number], 3) 
WHERE i.[Item Number] LIKE 'WH%' and
      i.[Item Number] NOT LIKE '%RMW'

の周りの括弧で何か特別なことを意図しているかどうかはわかりませんi.[Item Description]distinctキーワードは行全体に適用されます。

distinct説明のみが必要な場合は、 を使用する必要がありますgroup by。何かのようなもの:

SELECT i.[Item Description],
       max(iq.[QTY Available]),
       max(i.[Selling U Of M]), max(i.[Item Number]),
       max(V.VNDRCDE), max(V.VNAME)
FROM ItemQuantities iq INNER JOIN
     Items i
     ON iq.[Item Number] = i.[Item Number] left outer join
     Vendors v
     on LEFT(v.[Vendor ID], 3) = RIGHT(i.[Item Number], 3) 
WHERE i.[Item Number] LIKE 'WH%' and
      i.[Item Number] NOT LIKE '%RMW'
group by i.[Item Description])

max()最大値を返します。すべてが同じ場合、これは「任意の」値を取得する良い方法です。

于 2013-02-21T14:21:19.503 に答える