Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2014, 16:11
Dani539
 
Fecha de Ingreso: mayo-2014
Ubicación: Madrid
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Consultas a varias tablas

Hola a tod@s les cuento un poco cual es mi problema (Voy a poner un caso de ejemplo para explicar lo que me sucede).

Es mi primer post y todavía no se muy bien como funciona esto, ahora mismo no he conseguido subir imagenes mas adelante investigare como hacerlo

Bien comencemos tenemos esta estructura de la base de datos

Nombre de las tablas:(quería subir un par de imágenes pero no encuentro como, asi que dejo el enlace)

Cliente
http://gyazo.com/a4d4faa75f8d84434f49a0d8f07f10e6
CuentaTarjeta
http://gyazo.com/9e20eae75a5831bf842254aae7fb9235
HMovimientos
http://gyazo.com/26222b9527f0ff91bf714489159d2f47
CuentaTarjeta2
http://gyazo.com/32bb71044755d0b410477c67b8193f62
PerosonasAutorizadas
http://gyazo.com/aab81c526f8fb90438b463e7b81536c3
Cuenta
http://gyazo.com/4c2a124a5fb75a1b2a4262b681bc1401
Tarjeta
http://gyazo.com/95db214bd268c59a5e2d5bf3ebd8b9a2

Bien cuento un poco las relaciones que tienen cada tabla con las respectivas
(-> es para indicar que esta relacionada con una tabla)


Cliente -> No se relaciona con ninguna
CuentaTarjeta -> No se relaciona con ninguna
CuentaTarjeta2 -> Cliente
CuentaTarjeta2 -> CuentaTarjeta
Cuenta -> CuentaTarjeta
Tarjeta -> CuentaTarjeta
HMovimientos -> CuentaTarjeta
PersonasAutorizadas -> CuentaTarjeta

*Cuenta y Tarjeta, pertenece a un ISA con CuentaTarjeta:



Si necesitáis algún dato mas lo puede facilitar ya que es un trabajo para clase y no pasa nada.

Bien he aquí mi consulta

Del Cliente que vive en la direccion C/Candy 88 saqueme el titular y el iban de la cuenta, que personas tiene autorizadas, que tipo de cuenta es y que tipo de tarjetas tiene (En otras palabras que me saque de la tabla Cliente todos los Campos, de la tabla CuentaTarjeta el campo IBAN y Titular, de la tabla PersoanasAutorizadas Nombre, de la tabla Tarjeta el Tipo, y de la tabla Cuenta la categoría).

Esta es mi consulta la cual me saca lo que quiero pero me duplica los datos:

SELECT DISTINCT * FROM (SELECT * FROM Cliente WHERE Direccion = "C/Candy 88") Cliente, (SELECT IBAN, Titular FROM CuentaTarjeta WHERE IBAN = ANY (SELECT IBANCuentaTarjeta FROM CuentaTarjeta2 WHERE DNICliente = (SELECT DNI FROM Cliente WHERE Direccion = "C/Candy 88"))) CuentaTarjeta, (SELECT Nombre FROM PersonasAutorizadas WHERE IBANCuentaTarjeta = ANY (SELECT IBANCuentaTarjeta FROM CuentaTarjeta2 WHERE DNICLiente = (SELECT DNI FROM Cliente WHERE Direccion = "C/Candy 88"))) PersonasAutorizadas, (SELECT Categoria FROM Cuenta WHERE IBANCuentaTarjeta = ANY (SELECT IBANCuentaTarjeta FROM CuentaTarjeta2 WHERE DNICLiente = (SELECT DNI FROM Cliente WHERE Direccion = "C/Candy 88")))Cuenta, (SELECT Tipo, FCaducidad FROM Tarjeta WHERE IBANCuentaTarjeta = ANY (SELECT DISTINCT IBANCuentaTarjeta FROM CuentaTarjeta2 WHERE DNICLiente = (SELECT DISTINCT DNI FROM Cliente WHERE Direccion = "C/Candy 88")))Tarjeta;

Resultado:

http://gyazo.com/6d28db7b260c8246a137db4a1ca8fa37

Ya probe con DISNTICNT , JOIN, NATURAL JOIN, UNION CON INNER JOIN, etc..... y la verdad que me quede sin ideas y si la consulta la hago de 2 en 2 tablas no hay problema el problema es que cuando en vez de dos tablas intento sacar datos de 3 o mas.

La pregunta es ¿Se Puede sacar Datos de varias tablas a la vez sin que te duplique los resultados?

Un Saludo Muchas Gracias por la ayuda de antemano, espero sus repuestas