¿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?

Preguntas similare

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!
Respuesta Responder a este mensaje
#2 Tako
02/10/2003 - 08:54 | Informe spam
En SQLServer no existe el "CONNECT BY" (y mira que es una lastima) te va
a tocar programar su funcionalidad, en los BOL hay algún ejemplo de como
hacerlo, busca algo así como "Expandir Jerarquías" (hace poco se ha hecho
referencia a este tema por aquí)

Y cuidado con la recursividad en SQLServer que está implementado de una
forma un tanto patatera y solo se admite un número muy pequeño de llamadas
recursivas (32 me parece). así que si tienes varios niveles la puedes liar,
en los ejemplos del BOL hay ejemplos para recorrer jerarquías sin utilizar
recursividad; por cierto, un bonito ejercicio de programación :)

"Cándido Zuriaga" wrote in message
news:evjoC5$
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?


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida