UTNianos

Versión completa: [Pregunta] Ejercicio SQL Final Gestion de Datos 18/08/2009
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Es un ejercicio de SQL que quizas es una pavada, pero no doy en como es el camino:

[attachment=5363]

Lo pense de varias formas, pero no encuentro el camino para "abrir" los servicio1, servicio2, servicio3 en distintas filas sin usar subconsultas y poder ordenar todo el combo.

o quizas ya estoy cegado de hacer finales y no veo lo evidente n_nu

Desde ya muchas gracias!
Mira yo joinearia desde servicio a servicio cliente, si lo haces a la inversa no funca porque ahi te metes en el bardo de si es servicio 1 2 o 3 y todo eso, entonces mandas 3 joins, despues agrupas por cliente servicio y costo, por las dudas porque a veces el sql dice que bla bla bla la funcion de agregado y ordenas.

select c.cliente,s.idServicio
from servicio s join serviciosCliente on s.idServicio = serviciosCliente.servicio1
despues joineas con el servicio 2 y con el 3
group by cliente,idservicio,costo
order by cliente

Y creo qeu ahi sale
Te adjunto una captura de lo que serían las tablas y la consulta obtenida, yo a los campos los tomé como enteros y les asigné autonumérico, pero eso es irrelevante.

select sc.cliente, s.idServicio, s.costo
from serviciosCliente sc, servicio s
where (sc.servicio1 is not null or sc.servicio2 is not null or sc.servicio3 is not null)
and (sc.servicio1 = s.idServicio or sc.servicio2 = s.idServicio or sc.servicio3 = s.idServicio)
order by 1


[Imagen: ejerciciosqlfinalgestio.png]
SELECT sc.cliente , s.idSerivicio , s.costo
FROM servicioCliente sc , servicio s
WHERE s.idServicio IN (sc.servicio1,sc.servicio2,sc.servicio3)
ORDER BY sc.cliente

Saludos!
(18-12-2012 11:27)alonnotdead escribió: [ -> ]SELECT sc.cliente , s.idSerivicio , s.costo
FROM servicioCliente sc , servicio s
WHERE s.idServicio IN (sc.servicio1,sc.servicio2,sc.servicio3)
ORDER BY sc.cliente

Saludos!

el comando IN es ANSI ?
Perfecto, resuelto, muchas gracias por las respuestas!
(18-12-2012 13:02)juani0033 escribió: [ -> ]
(18-12-2012 11:27)alonnotdead escribió: [ -> ]SELECT sc.cliente , s.idSerivicio , s.costo
FROM servicioCliente sc , servicio s
WHERE s.idServicio IN (sc.servicio1,sc.servicio2,sc.servicio3)
ORDER BY sc.cliente

Saludos!

el comando IN es ANSI ?

sips
(18-12-2012 13:02)juani0033 escribió: [ -> ]
(18-12-2012 11:27)alonnotdead escribió: [ -> ]SELECT sc.cliente , s.idSerivicio , s.costo
FROM servicioCliente sc , servicio s
WHERE s.idServicio IN (sc.servicio1,sc.servicio2,sc.servicio3)
ORDER BY sc.cliente

Saludos!

el comando IN es ANSI ?

Supongo que sí, es lo mismo que hacer muchos OR thumbup3
(18-12-2012 23:08)alonnotdead escribió: [ -> ]
(18-12-2012 13:02)juani0033 escribió: [ -> ]
(18-12-2012 11:27)alonnotdead escribió: [ -> ]SELECT sc.cliente , s.idSerivicio , s.costo
FROM servicioCliente sc , servicio s
WHERE s.idServicio IN (sc.servicio1,sc.servicio2,sc.servicio3)
ORDER BY sc.cliente

Saludos!

el comando IN es ANSI ?

Supongo que sí, es lo mismo que hacer muchos OR thumbup3

CLARO, por eso te lo pregunto. Idea
vuelvo a decir Si, es ANSI, carajo, mierda

(?)
(19-12-2012 10:49)gonnza escribió: [ -> ]vuelvo a decir Si, es ANSI, carajo, mierda

(?)

[?]
URLs de referencia