¿Como emular CONNECT BY de ORACLE?

01/10/2003 - 11:23 por Cándido Zuriaga | Informe spam
Tengo una query en Oracle que tengo que pasar a SQL Server... he visto
procedimientos recursivos que tabulan los datos según la jerarquía, pero
como emular esta query?

SELECT distinct D.name
FROM prod_categ A,
products B,
prod_comp C,
companies D
WHERE A.id_products = B.id_products AND
B.id_products = C.id_products AND
C.id_companies = D.id_companies AND
B.name like '%ProductSubstr%' AND
A.id_categories in
(SELECT id_categories
FROM categories
START WITH id_categories in
(SELECT id_categories FROM categories WHERE name like
'%CategSubstr%')
CONNECT BY PRIOR id_categories = id_categories_parent);

O sea: "Listado de nombres de compañías que sirvan productos en cuyo nombre
se contenga la subcadena ProductSubstr y que pertenezcan a una categoría
cuyo nombre contenga la subcadena CategSubstr o a cuanquiera de las
categorías hijas aunque no cumplan esa condición

¿Alguna idea?
 

Leer las respuestas

#1 Yolanda Herrero
01/10/2003 - 13:01 | Informe spam
Creo que sería así:

SELECT DISTINCT C.name
FROM companies C,
prod_comp PC,
products P,
prod_categ PCG,
categories CG
WHERE C.id_companies=PC.id_companies
AND PC.id_products=P.id_products
AND PCG.id_products=P.id_products
AND PCG.id_categories=CG.id_categories
AND P.name LIKE '%'+@productsubstr+'%'
AND (CG.name LIKE '%'+@categsubstr+'%'
OR CG.id_categories_parent IN(SELECT id_categories
FROM categories
WHERE name LIKE '%'+@categsubstr+'%'))

Espero que te sirva!

Saludos!

Preguntas similares