cancel
Showing results for 
Search instead for 
Did you mean: 

Query para buscar coincidencia de dos productos

0 Kudos

Buenas.

Necesito realizar lo siguiente, tengo creada una query para buscar productos que contiene una Materia Prima, con ello no tengo problemas, se ingresa el código sap asociado y me muestra el código del articulo y su descripción, mas el código del articulo que lo contiene y misma descripción de el, con la siguiente query.

Select a.Code, b.ItemName, c.Code, d.ItemName, c.Quantity

From OITT a

  Inner Join OITM b on a.Code = b.ItemCode

  Inner Join ITT1 c on a.Code = c.Father

  Left Join OITM d on c.Code = d.ItemCode

Where c.Code =  [%0]

El punto es que no puedo lograr que me muestre coincidencias de ingredientes en dos materias primas, al colocar un "AND" me pide ambos codigos pero no muestra nada, al colocar "OR" me pide dos codigos, pero me muestra los productos que tienen una u otra no solo el producto que contiene ambas.

Select a.Code, b.ItemName, c.Code, d.ItemName, c.Quantity

From OITT a

  Inner Join OITM b on a.Code = b.ItemCode

  Inner Join ITT1 c on a.Code = c.Father

  Left Join OITM d on c.Code = d.ItemCode

Where c.Code =  [%0] or c.Code = [%1]

Doy ejemplo del problema escrito, tengo un pastel codigo 002, compuesto por mantequilla, agua, sal, harina, y tengo otro pastel codigo 003 compuesto por margarina, agua, sal, harina de soya, entonces necesito que me muestre los componentes en comun que tienen dichos codigos.

Si alguien pudiese ayudar lo agradecería mucho.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Comprueba si esto te sirve. Saludos.

/*SELECT FROM [dbo].[OITM] T0*/

declare @ITEM1 as nvarchar(max)

/* WHERE */

set @ITEM1 = /* T0.ItemCode */ '[%0]'

/*SELECT FROM [dbo].[OITM] T1*/

declare @ITEM2 as nvarchar(max)

/* WHERE */

set @ITEM2 = /* T1.ItemCode */ '[%1]'

select code

from oitt a

where

charindex ('"'+@ITEM1+'"',(select stuff((

select ',"'+code +'"'from itt1

where father = (a.code)

for xml path ('')

),1,1,'')),1)<>0

AND

charindex ('"'+@ITEM2+'"',(select stuff((

select ',"'+code +'"'from itt1

where father = (a.code)

for xml path ('')

),1,1,'')),1)<>0

Answers (1)

Answers (1)

0 Kudos

Muy agradecido, es loq ue buscaba, no pensé que fuese tan complicado y con tantos pasos, sólo creí tener que poner un AND pero no me resulto, ahora veré como puedo mostrar lo asociado a esos códigos.

Muchas gracias.