VISTA CONCATENADA

13/07/2005 - 13:00 por **joselitux** | Informe spam
Hola

Estoy elaborando una vista de venta de autos en la que la primera tabla
implicada devuelve un solo registro con la Entrada aportada y que debe
ser el primer registro de la vista. La otra tabla va intacta debajo con
todos los recibos.
Para eso el JOIN no me sirve porque me coloca la entrada de la primera
tabla repetida tantas veces como recibos hay en la segunda y realmente
necesito una vista que incluya dicha entrada como si fuese el primer recibo.

Un ejemplo:

TABLA 1 (entrada)

ID_CLIENTE IMPORTE_ENTRADA FECHA
12 12453,9876 1/1/99
16 6554,4356 1/12/05


TABLA 2 (recibos)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO FECHA
12 1 345,2345 1/2/99
12 2 345,2345 1/2/99
12 3 345,2345 1/2/99


SELECT * FROM TABLA1 INNER JOIN TABLA2 ON
TABLA1.ID_CLIENTE=TABLA2.ID_CLIENTE

RESULTADO DE LA VISTA (siplificado)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO IMPORTE_ENTRADA
12 1 345,2345 12453,9876
12 2 345,2345 12453,9876
... ... ... ...

Cuando en realidad lo que yo quiero obtener es lo siguiente:

ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...


Gracias mil

Preguntas similare

Leer las respuestas

#1 Maxi
14/07/2005 - 01:17 | Informe spam
Hola, no te entendi muy bien: explicame de donde sale esto:

ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...




el 0? el 1 y el 2? podrias armar un archivo txt para poderlo leer mejor?

Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"**joselitux**" escribió en el mensaje
news:
Hola

Estoy elaborando una vista de venta de autos en la que la primera tabla
implicada devuelve un solo registro con la Entrada aportada y que debe ser
el primer registro de la vista. La otra tabla va intacta debajo con todos
los recibos.
Para eso el JOIN no me sirve porque me coloca la entrada de la primera
tabla repetida tantas veces como recibos hay en la segunda y realmente
necesito una vista que incluya dicha entrada como si fuese el primer
recibo.

Un ejemplo:

TABLA 1 (entrada)

ID_CLIENTE IMPORTE_ENTRADA FECHA
12 12453,9876 1/1/99
16 6554,4356 1/12/05


TABLA 2 (recibos)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO FECHA
12 1 345,2345 1/2/99
12 2 345,2345 1/2/99
12 3 345,2345 1/2/99


SELECT * FROM TABLA1 INNER JOIN TABLA2 ON
TABLA1.ID_CLIENTE=TABLA2.ID_CLIENTE

RESULTADO DE LA VISTA (siplificado)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO IMPORTE_ENTRADA
12 1 345,2345 12453,9876
12 2 345,2345 12453,9876
... ... ... ...

Cuando en realidad lo que yo quiero obtener es lo siguiente:

ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...


Gracias mil
Respuesta Responder a este mensaje
#2 Eleazar
14/07/2005 - 01:37 | Informe spam
Hola si lo que deseas, es mostrar en un solo result set el maestro y el
detalle tendrias que usar una union al momento de crear la vista y usar un
campo para ordenar por tipo de registro (para saber si es maestro o
detalle). Generalmente esto se resuelve en el front si es un reporteador se
utiliza un corte..
espero te ayude
Ele

"**joselitux**" escribió en el mensaje
news:
Hola

Estoy elaborando una vista de venta de autos en la que la primera tabla
implicada devuelve un solo registro con la Entrada aportada y que debe
ser el primer registro de la vista. La otra tabla va intacta debajo con
todos los recibos.
Para eso el JOIN no me sirve porque me coloca la entrada de la primera
tabla repetida tantas veces como recibos hay en la segunda y realmente
necesito una vista que incluya dicha entrada como si fuese el primer


recibo.

Un ejemplo:

TABLA 1 (entrada)

ID_CLIENTE IMPORTE_ENTRADA FECHA
12 12453,9876 1/1/99
16 6554,4356 1/12/05


TABLA 2 (recibos)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO FECHA
12 1 345,2345 1/2/99
12 2 345,2345 1/2/99
12 3 345,2345 1/2/99


SELECT * FROM TABLA1 INNER JOIN TABLA2 ON
TABLA1.ID_CLIENTE=TABLA2.ID_CLIENTE

RESULTADO DE LA VISTA (siplificado)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO IMPORTE_ENTRADA
12 1 345,2345 12453,9876
12 2 345,2345 12453,9876
... ... ... ...

Cuando en realidad lo que yo quiero obtener es lo siguiente:

ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...


Gracias mil
Respuesta Responder a este mensaje
#3 **joselitux**
14/07/2005 - 08:07 | Informe spam
El problema es que el primer registro de cada cliente debe de ser la
entrada, que está en otra tabla diferente a la de recibos.

Le dí el numero cero al importe de la entrada para distinguirlo del
resto de recibos.
Esto que ves no sale de ningún sitio, debería conseguirlo para la
vista pero hasta ahora ha sido imposible. Lo he hecho yo a mano.


Maxi wrote:
Hola, no te entendi muy bien: explicame de donde sale esto:


ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...





el 0? el 1 y el 2? podrias armar un archivo txt para poderlo leer mejor?
Respuesta Responder a este mensaje
#4 Enrique Barceló
14/07/2005 - 16:00 | Informe spam
Hola,

puedes usar un select .. from tabla1 union select.. from tabla2

Un saludo,

Enrique Barceló

"**joselitux**" escribió en el mensaje
news:
Hola

Estoy elaborando una vista de venta de autos en la que la primera tabla
implicada devuelve un solo registro con la Entrada aportada y que debe ser
el primer registro de la vista. La otra tabla va intacta debajo con todos
los recibos.
Para eso el JOIN no me sirve porque me coloca la entrada de la primera
tabla repetida tantas veces como recibos hay en la segunda y realmente
necesito una vista que incluya dicha entrada como si fuese el primer
recibo.

Un ejemplo:

TABLA 1 (entrada)

ID_CLIENTE IMPORTE_ENTRADA FECHA
12 12453,9876 1/1/99
16 6554,4356 1/12/05


TABLA 2 (recibos)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO FECHA
12 1 345,2345 1/2/99
12 2 345,2345 1/2/99
12 3 345,2345 1/2/99


SELECT * FROM TABLA1 INNER JOIN TABLA2 ON
TABLA1.ID_CLIENTE=TABLA2.ID_CLIENTE

RESULTADO DE LA VISTA (siplificado)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO IMPORTE_ENTRADA
12 1 345,2345 12453,9876
12 2 345,2345 12453,9876
... ... ... ...

Cuando en realidad lo que yo quiero obtener es lo siguiente:

ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...


Gracias mil
Respuesta Responder a este mensaje
#5 Salvador Ramos
15/07/2005 - 08:44 | Informe spam
Hola,
Creo que esto es lo que necesitas (si he entendido bien):

SELECT T1.ID_CLIENTE, 0 AS ID_RECIBO, T1.IMPORTE_ENTRADA AS IMPORTE
FROM TABLA1 AS T1
UNION ALL
SELECT T2.ID_CLIENTE, T2.ID_RECIBO, T2.IMPORTE_RECIBO AS IMPORTE
FROM TABLA2 AS T2
ORDER BY ID_CLIENTE, ID_RECIBO

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"**joselitux**" escribió en el mensaje
news:
Hola

Estoy elaborando una vista de venta de autos en la que la primera tabla
implicada devuelve un solo registro con la Entrada aportada y que debe ser
el primer registro de la vista. La otra tabla va intacta debajo con todos
los recibos.
Para eso el JOIN no me sirve porque me coloca la entrada de la primera
tabla repetida tantas veces como recibos hay en la segunda y realmente
necesito una vista que incluya dicha entrada como si fuese el primer
recibo.

Un ejemplo:

TABLA 1 (entrada)

ID_CLIENTE IMPORTE_ENTRADA FECHA
12 12453,9876 1/1/99
16 6554,4356 1/12/05


TABLA 2 (recibos)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO FECHA
12 1 345,2345 1/2/99
12 2 345,2345 1/2/99
12 3 345,2345 1/2/99


SELECT * FROM TABLA1 INNER JOIN TABLA2 ON
TABLA1.ID_CLIENTE=TABLA2.ID_CLIENTE

RESULTADO DE LA VISTA (siplificado)

ID_CLIENTE ID_RECIBO IMPORTE_RECIBO IMPORTE_ENTRADA
12 1 345,2345 12453,9876
12 2 345,2345 12453,9876
... ... ... ...

Cuando en realidad lo que yo quiero obtener es lo siguiente:

ID CLIENTE ID_RECIBO IMPORTE_RECIBO
12 0 12453,9876 (LA ENTRADA 1º RECIBO)
12 1 345,2345
12 2 345,2345
... ... ...


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