0

ユーザーがアップロードしたcsvを取得し、SQLテーブルの番号と一致するクエリがあります。それを以下に示します。正常に動作しますが、同様のことを行うには別のクエリが必要です。

(更新ではなく) 選択するクエリが必要になりました。このクエリは aspx ページで使用されます。ユーザーが部品番号を入力すると、部品番号に一致する会社と他のすべての詳細が表示されます。流れは添付画像の通りです。

私はこれを機能させるために多くのことを試みました。私はかなり調査しましたが、これをまとめるのに十分なSQLに精通していません。

これは、ユーザーが csv ファイルをアップロードするときに機能するクエリです

UPDATE imports 
SET imports.AMIPartNumber = 
coalesce(AMIA.Item,AMIB.Item,AMIC.Item,AMID.Item,AMIE.Item), 
Imports.AMIDescription = 
coalesce(AMIA.Description,AMIB.Description,AMIC.Description,AMID.Description,AMIE.Description) 
FROM imports as I 
LEFT JOIN JD as JDA 
ON I.OEMPartNumber = JDA.OEMPartNumber 
LEFT JOIN amipartnumbers as AMIA 
ON JDA.OEMPartNumber = AMIA.OEMItem 
LEFT JOIN JD as JDB 
ON I.OEMPartNumber = JDB.OEMSubNumber 
LEFT JOIN amipartnumbers as AMIB 
ON JDB.OEMSubNumber = AMIB.OEMItem 
LEFT JOIN JD as JDC 
ON I.OEMPartNumber = JDC.OEMSubNumber2 
LEFT JOIN amipartnumbers as AMIC 
ON JDB.OEMSubNumber2 = AMIC.OEMItem 
LEFT JOIN JD as JDD 
ON I.OEMPartNumber = JDD.OEMSubNumber3 
LEFT JOIN amipartnumbers as AMID 
ON JDB.OEMSubNumber2 = AMID.OEMItem 
LEFT JOIN JD as JDE 
ON I.OEMPartNumber = JDE.OEMSubNumber4 
LEFT JOIN amipartnumbers as AMIE 
ON JDB.OEMSubNumber2 = AMIE.OEMItem ;

select * from imports

これは、私がやろうとしていることの流れです(fyi写真のAMIは、上記のクエリのamipartnumbersです) フロー

4

3 に答える 3

1

ok, something like this?

SELECT *
FROM JD AS JDA
LEFT JOIN amipartnumbers as AMIA ON JDA.OEMPartNumber = AMIA.OEMItem 
LEFT JOIN amipartnumbers as AMIB ON JDA.OEMSubNumber = AMIB.OEMItem 
LEFT JOIN amipartnumbers as AMIC ON JDA.OEMSubNumber2 = AMIC.OEMItem 
LEFT JOIN amipartnumbers as AMID ON JDA.OEMSubNumber3 = AMID.OEMItem 
LEFT JOIN amipartnumbers as AMIE ON JDA.OEMSubNumber4 = AMID.OEMItem 
WHERE OEMPartNumber = @userInput
   OR OEMSubNumber = @userInput
   OR OEMSubNumber2 = @userInput
   OR OEMSubNumber3 = @userInput
   OR OEMSubNumber4 = @userInput

or maybe you only want to join on a match? I would do that like this:

  SELECT *
  FROM JD 
  LEFT JOIN amipartnumbers A ON JD.OEMPartNumber = A.OEMItem 
  WHERE JD.OEMPartNumber = @userInput
UNION ALL 
  SELECT *
  FROM JD 
  LEFT JOIN amipartnumbers A ON JD.OEMSubNumber = A.OEMItem 
  WHERE JD.OEMSubNumber = @userInput
UNION ALL 
  SELECT *
  FROM JD 
  LEFT JOIN amipartnumbers A ON JD.OEMSubNumber2 = A.OEMItem 
  WHERE JD.OEMSubNumber2 = @userInput
UNION ALL 
  SELECT *
  FROM JD 
  LEFT JOIN amipartnumbers A ON JD.OEMSubNumber3 = A.OEMItem 
  WHERE JD.OEMSubNumber3 = @userInput
UNION ALL 
  SELECT *
  FROM JD 
  LEFT JOIN amipartnumbers A ON JD.OEMSubNumber4 = A.OEMItem 
  WHERE JD.OEMSubNumber4 = @userInput
于 2013-05-24T02:14:29.753 に答える
1

これを試して:

DECLARE @jd TABLE (
   [OEMPartNumber] int, 
   [OEMSubNumber] int, 
   [OEMSubNumber2] int,
   [OEMSubNumber3] int
)

INSERT INTO @jd
   SELECT [OEMPartNumber], [OEMSubNumber], [OEMSubNumber2], [OEMSubNumber3]
   FROM [JD]
   WHERE 
      [OEMPartNumber] = @enterNumber OR
      [OEMSubNumber] = @enterNumber OR
      [OEMSubNumber2] = @enterNumber OR
      [OEMSubNumber3] = @enterNumber

SELECT ami.[Item], ami.[Description] FROM [AMI] ami
   JOIN @jd ON (
      ami.[OEMItem] = [@jd].[OEMPartNumber] OR
      ami.[OEMItem] = [@jd].[OEMSubNumber] OR
      ami.[OEMItem] = [@jd].[OEMSubNumber2] OR
      ami.[OEMItem] = [@jd].[OEMSubNumber3]
   )
于 2013-05-24T02:20:34.427 に答える