Consulta compleja SQL
Publicado por Christian (1 intervención) el 01/06/2010 12:35:06
Hola a todos.
A ver si me podeis ayudar a realizar la siguiente consulta.
Tengo dos tablas: HEADER_TABLE and DETAILS_TABLE con una relación 1..N con la peculiaridad de que una cabecera puede ser que no tenga detalle.
*******************
HEADER_TABLE
********************
******************************
KEY * NAME1 * NAME2
******************************
KEY1 * Carlos * Abad
KEY2 * Albert * Garcia
KEY2 * Marc * Ingla
KEY2 * Isidre * Abait
******************
DETAILS_TABLE
*******************
**********************************************
KEY * POSITION
*********** **********************************
KEY1 * 01
KEY2 * 01
KEY2 * 02
KEY2 * 03
KEY3 * 01
KEY4 * 01
KEY4 * 02
KEY4 * 03
Yo con esta consulta:
SELECT A.KEY, A.NAME1, A.NAME2,'' AS POSITION
FROM HEADER_TABLE AS A LEFT JOIN DETAILS_TABLE AS B ON A.KEY = B.KEY
UNION
SELECT B.KEY,'' AS NAME1, '' AS NAME2, B.POSITION
FROM HEADER_TABLE AS A LEFT JOIN DETAILS_TABLE AS B ON A.KEY = B.KEY
WHERE (A.PI = '0')
ORDER BY A.KEY
Puedo obtener estos formateados de la siguiente manera. Un linea con los datos de cabecera y después n linea con sus detalles si los tiene.
****************************************
KEY * NAME1 * NAME2 * POSITION
****************************************
KEY1 * Carlos * Abad *
KEY2 * Albert * Garcia *
KEY2 * * * 01
KEY2 * * * 02
KEY2 * * * 03
KEY3 * Marc * Ingla *
KEY4 * Isidre * Abait *
KEY4 * * * 01
KEY4 * * * 02
KEY4 * * * 03
Si yo quisiera obtener el resultado formateado de la siguiente forma:
****************************************
KEY * NAME1 * NAME2 * POSITION
****************************************
KEY1 * Carlos * Abad *
KEY2 * Albert * Garcia * 01
KEY2 * * * 02
KEY2 * * * 03
KEY3 * Marc * Ingla *
KEY4 * Isidre * Abait * 01
KEY4 * * * 02
KEY4 * * * 03
Es decir, en la primer linea de cabecera, también los datos de la primera línea de detalle, como podría hacerlo?
Saludos y gracias
A ver si me podeis ayudar a realizar la siguiente consulta.
Tengo dos tablas: HEADER_TABLE and DETAILS_TABLE con una relación 1..N con la peculiaridad de que una cabecera puede ser que no tenga detalle.
*******************
HEADER_TABLE
********************
******************************
KEY * NAME1 * NAME2
******************************
KEY1 * Carlos * Abad
KEY2 * Albert * Garcia
KEY2 * Marc * Ingla
KEY2 * Isidre * Abait
******************
DETAILS_TABLE
*******************
**********************************************
KEY * POSITION
*********** **********************************
KEY1 * 01
KEY2 * 01
KEY2 * 02
KEY2 * 03
KEY3 * 01
KEY4 * 01
KEY4 * 02
KEY4 * 03
Yo con esta consulta:
SELECT A.KEY, A.NAME1, A.NAME2,'' AS POSITION
FROM HEADER_TABLE AS A LEFT JOIN DETAILS_TABLE AS B ON A.KEY = B.KEY
UNION
SELECT B.KEY,'' AS NAME1, '' AS NAME2, B.POSITION
FROM HEADER_TABLE AS A LEFT JOIN DETAILS_TABLE AS B ON A.KEY = B.KEY
WHERE (A.PI = '0')
ORDER BY A.KEY
Puedo obtener estos formateados de la siguiente manera. Un linea con los datos de cabecera y después n linea con sus detalles si los tiene.
****************************************
KEY * NAME1 * NAME2 * POSITION
****************************************
KEY1 * Carlos * Abad *
KEY2 * Albert * Garcia *
KEY2 * * * 01
KEY2 * * * 02
KEY2 * * * 03
KEY3 * Marc * Ingla *
KEY4 * Isidre * Abait *
KEY4 * * * 01
KEY4 * * * 02
KEY4 * * * 03
Si yo quisiera obtener el resultado formateado de la siguiente forma:
****************************************
KEY * NAME1 * NAME2 * POSITION
****************************************
KEY1 * Carlos * Abad *
KEY2 * Albert * Garcia * 01
KEY2 * * * 02
KEY2 * * * 03
KEY3 * Marc * Ingla *
KEY4 * Isidre * Abait * 01
KEY4 * * * 02
KEY4 * * * 03
Es decir, en la primer linea de cabecera, también los datos de la primera línea de detalle, como podría hacerlo?
Saludos y gracias
Valora esta pregunta
0