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
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
(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
CLARO, por eso te lo pregunto.
vuelvo a decir Si, es ANSI, carajo, mierda
(?)
(19-12-2012 10:49)gonnza escribió: [ -> ]vuelvo a decir Si, es ANSI, carajo, mierda
(?)
[?]