Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/10/2009, 23:13
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 11 meses
Puntos: 7
Respuesta: cruse de tres tablas

Te he entendido y debes normalizar tus datos.
Por fortuna tu problema tiene una solución simple a partir de SQL Server 2005.
Como no tengo una muestra de tus datos me he inventado una con tu estructura para poder mostrar una solución con la cual podrias proceder.
Código:
--Contrucción de datos de prueba
DECLARE @tblsucursales TABLE(
    idsucursal    INT NOT NULL,
    nombre        VARCHAR(30) NOT NULL,
    ciudad        VARCHAR(30) NOT NULL
)

DECLARE @tblcupones TABLE(
    idcupon        INT NOT NULL,
    idcomercio    INT NOT NULL,
    sucursales    VARCHAR(200),
    estado        TINYINT NOT NULL
)

INSERT INTO @tblsucursales
SELECT    1            AS idsucursal,
        'MEX005'        AS nombre,
        'México'    AS ciudad UNION ALL
SELECT    2, 'MEX006', 'México'  UNION ALL
SELECT    3, 'MEX007', 'México'  UNION ALL
SELECT    4, 'MEX008', 'México'  UNION ALL
SELECT    5, 'GDL001', 'Guadalajara'  UNION ALL
SELECT    6, 'GDL002', 'Guadalajara'  UNION ALL
SELECT    7, 'GDL003', 'Guadalajara'  UNION ALL
SELECT    8, 'GDL004', 'Guadalajara'  UNION ALL
SELECT    9, 'GDL005', 'Guadalajara'  UNION ALL
SELECT    10, 'MTY001', 'Monterrey'  UNION ALL
SELECT    11, 'MTY001', 'Monterrey'  UNION ALL
SELECT    12, 'MTY001', 'Monterrey'  UNION ALL
SELECT    13, 'MTY001', 'Monterrey'  UNION ALL
SELECT    14, 'MTY001', 'Monterrey'  UNION ALL
SELECT    15, 'MTY001', 'Monterrey'  UNION ALL
SELECT    16, 'MTY001', 'Monterrey'

INSERT INTO @tblcupones
SELECT    1 AS idcupon,
        500 AS idcomercio,
        '2,3' AS sucursales,
        0 AS estado UNION ALL
SELECT    2, 5001, '1,4', 0 UNION ALL
SELECT    3, 5001, '5,6,9,', 1 UNION ALL
SELECT    4, 5001, '11,13,15', 1

--Consulta
SELECT        tc.idcupon,
            ids.idsucursal,
            ts.nombre,
            ts.ciudad
FROM        (
                SELECT        idcupon,
                            CAST('<x>' + REPLACE(sucursales, ',', '</x><x>') + '</x>' AS XML) AS x
                FROM        @tblcupones AS a
                WHERE        estado = 1
            ) AS tc
            CROSS APPLY    (
                    SELECT    sucursal.id.value('.', 'INT') AS idsucursal
                    FROM    tc.x.nodes('/x') AS sucursal(id)
                ) AS ids
            INNER JOIN    @tblsucursales AS ts
                        ON ids.idsucursal = ts.idsucursal
Saludos.