Je dois créer une association entre deux produits, qui a des ID_produits uniques et les insérer dans une table déjà construite. L'association est créée en fonction du numéro de pièce unique de ces ID de produit. Par exemple:Création d'une association entre deux ID de produit
Product_id = 7578711 Part Number = 0101-2478 Product Id = 7957948 Part Number = 0101-2478 Product Id = 10558140 Part Number = 0101-2478
et ma table actuelle a les colonnes suivantes:
ID (int) identity (1, 1)
product_id
date
guid
où les données sont sous forme de:
1, 7578711, 12345, 2010-08-24 04:29:04.000,00286AFB-3880-4085-BAA0-DBCC0D59A391
j'ai une requête qui a la capacité de roll Product_id au niveau du numéro de pièce, puis une requête pour faire passer le numéro de pièce au niveau product_id.
Sur la base des données ci-dessus, où ils ont même numéro de pièce, je veux créer une association et de générer des instructions d'insertion qui ajoutera 2 enregistrements sous forme de:
2, 7957948, 12345, 2010-08-24 04:29:04.000,00286AFB-3880-4085-BAA0-DBCC0D59A391
3, 10558140, 12345, 2010-08-24 04:29:04.000,00286AFB-3880-4085-BAA0-DBCC0D59A391
Il va être beaucoup ID de produit dans cette table. Ce qui précède est juste un exemple:
J'ai 2 expressions de table communes: 1 roule l'ID de produit au niveau de numéro de pièce, et un autre annule le numéro de pièce à plusieurs ID de produit. J'essaie d'éviter un curseur.
Quelqu'un peut-il m'aider avec ce problème?
Mes 2 CTEs comme suit: comme
;WITH cte (product_id, item_number)
AS
(
SELECT DISTINCT --TOP 1000
pds.product_id
--,pd.productOwner_id
, i.item_number
FROM SurfwatcherEndeavorStats.dbo.productDetailBySite pds WITH (NOLOCK)
INNER JOIN ProductData.dbo.productDimensions pd with (NOLOCK) ON pds.product_id = pd.product_id
INNER JOIN ProductData.dbo.options o with (NOLOCK) ON pds.product_id = o.product_id
INNER JOIN ProductData.dbo.items i with (NOLOCK) ON o.option_id = i.item_id
WHERE pds.productDetail_date > DATEADD(yyyy, -1, GETDATE())
AND i.item_number IS NOT NULL
--AND i.item_number = '0101-3258'
)
SELECT TOP 1 item_number
FROM cte WITH (NOLOCK)
WHERE product_id = 7957948
;WITH cte1 (product_id, item_number)
AS
(
SELECT DISTINCT --TOP 1000
pds.product_id
--,pd.productOwner_id
, i.item_number
FROM SurfwatcherEndeavorStats.dbo.productDetailBySite pds WITH (NOLOCK)
INNER JOIN ProductData.dbo.productDimensions pd with (NOLOCK) ON pds.product_id = pd.product_id
INNER JOIN ProductData.dbo.options o with (NOLOCK) ON pds.product_id = o.product_id
INNER JOIN ProductData.dbo.items i with (NOLOCK) ON o.option_id = i.item_id
WHERE pds.productDetail_date > DATEADD(yyyy, -1, GETDATE())
AND i.item_number IS NOT NULL
)
SELECT product_id
FROM cte1 WITH (NOLOCK)
WHERE item_number = '0101-2478'
Et le problème est ... –
Donc, vous voulez lier des produits via GUID, n'est-ce pas? –
Vous n'avez vraiment pas besoin d'utiliser 'with (nolock)' sur les CTE. –