Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Encontrar registros simétricos

Estas en el tema de Encontrar registros simétricos en el foro de SQL Server en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 28/09/2010, 15:51
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #2 (permalink)  
Antiguo 28/09/2010, 17:12
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Encontrar registros simétricos

Cada motor, de acuerdo a sus posiblidades, puede resolver esta problematica de una u otra forma, aqui dependera de la EDICION-VERSION de SQL Server que se prentenda manejar
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 29/09/2010, 08:59
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Encontrar registros simétricos

Cita:
Iniciado por iislas Ver Mensaje
Cada motor, de acuerdo a sus posiblidades, puede resolver esta problematica de una u otra forma, aqui dependera de la EDICION-VERSION de SQL Server que se prentenda manejar
Gracias Iislas, como te comentaba este no es en realidad un problema mío, pero de cualquier manera me interesa conocer cómo se realiza.

En estos momentos en la empresa donde laboro se está trabajando con SQL Server 2005 Enterprise, pero es posible que para el siguiente año se haga la migración al SQL Server 2008 R2 Enterprise, igual y sería conveniente saber cómo se resolvería esta consulta para cada uno de los DBMS.

Saludos.
Leo.

Etiquetas: encontrar, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:07.