Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2010, 15:51
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Encontrar registros simétricos

Buenas tardes a todos, navegando por algunos otros foros encontré este problema que quiero comentar con ustedes. La solución que se da es para ORACLE, sin embargo no he logrado encontrar un equivalente para SQL Server. el problema dice así:

Cita:
Obtener las parejas de sucursales (idSucursal1, idSucursal2) que tienen exactamente las mismas películas, sin considerar la cantidad de ejemplares que existen en cada una de ellas.

ATENCIÓN: no deben devolverse parejas simétricas.

(La realidad se basa en un video club).
Las tablas para esta consulta sin las siguientes:

-inventario (id_pelicula, id_sucursal, cant_ejemplares)
Representa las películas que están catalogadas en cada sucursal.

-peliculas (id_pelicula, titulo, descripcion, anio, id_idioma_original, duracion,
duracion_alquiler, costo_alquiler, costo_reemplazo, clasificacion, contenidos_extra)
Esta es la solución con ORACLE

Código SQL:
Ver original
  1. WITH stock AS (
  2. SELECT id_sucursal sucursal, MAX( sys_connect_by_path( id_pelicula, ',') ) pelicula
  3. FROM
  4. (SELECT inventario.*, ROW_NUMBER() OVER (partition BY id_sucursal ORDER BY id_pelicula) rn
  5. FROM inventario)
  6. START WITH rn = 1
  7. CONNECT BY prior rn = rn-1 AND prior id_sucursal = id_sucursal
  8. GROUP BY id_sucursal
  9. )
  10. SELECT a.sucursal, b.sucursal
  11. FROM stock a, stock b
  12. WHERE a.pelicula = b.pelicula
  13. AND a.sucursal <> b.sucursal

El post original está Aquí

Apenas estoy leyendo acerca de las consultas recursivas que creo sería la opción de SQL Server para el operador CONNECT BY PRIOR de ORACLE. Como comenté este no es un problema que yo haya planteado, pero no me quiero quedar con la duda si se puede o no hacer con SQL Server.

Cualquier comentario será bienvenido.

Saludos
Leo.