Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: mr_marley en 12 Julio 2010, 17:40 pm



Título: Como Hacer consultas de 4 tablas(Solucionado)
Publicado por: mr_marley en 12 Julio 2010, 17:40 pm
Hola primeramente a todos.., quiero agradecer por contestar a las enteriores preguntas que he realizado sus respuestan me an servido mucho

esta ocacion tengo una duda el cual es la siguiente

Tengo 4 tablas

T1 ,T2, T3, T4

campos de las tablas(Ejemplos)

T1 = ID,x,y,z.. T2= ID,R,f,g,..

T3=FAC,ID,f T4=FAC,R,f

 "Select * from T1 inner join T3 on T1.ID = T3.ID // selecciono 2 tablas pero quiero que tambien relacione T3 con T4 por el campo FAC y la vez la T4 se relacione con la T2 por R todo esto con un Where f=#10/10/09#;

No se si me explico..!
lo que estoy tratando de hacer es una factura

donde T1= clientes T2 = reparaciones T3= encabezado de Factura T4 = Detalles de la Factura..

entonces cuando eliga un fecha queiro tener un informe de facturas hechas ese dia, la fecha la tomo de T3 encabezado de factura y relaciono con la T1 por el campo ID para tomar los datos del cliente luego relaciono T3 con T4 por el campo FAC(que seria el numero de factura) para obntener los detalles de factura, ala vez se ralaciono esta con T2 para optener los detalles dela repacion por el campo R,F

espero y entiendan..

me gustaria que me dijeran como relacionar 4 tablas...

tambien como es la mejor manera de hacer una factura..

Gracias!!


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: xexio en 12 Julio 2010, 22:10 pm
mmm si me das también los nombres de los campos de cada tabla te la hago yo si quieres
de todas formas, tienes que buscar para saber como hacerlo "combinación interna" si las combinas sin la combinación interna, seguramente te dará un producto cartesiano


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 13 Julio 2010, 02:27 am
mmm si me das también los nombres de los campos de cada tabla te la hago yo si quieres
de todas formas, tienes que buscar para saber como hacerlo "combinación interna" si las combinas sin la combinación interna, seguramente te dará un producto cartesiano

string consulta = "SELECT * FROM clientes INNER JOIN " +
              "(Fac_Enc INNER JOIN Fac_deta ON Fac_Enc.id_fac = Fac_deta.id_fac )" +
               " ON Fac_Enc.id_cliente = clientes.id_cliente "+
                "where Fac_enc.fecha=#" + fecha+"#";   

DE esta manera puedo relacionar tres tablas y funciona bien.. aver si con este ejemplo  se pueden basar para darme ideas xD


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: N3r0 en 13 Julio 2010, 04:03 am
Buenas ahi te dejo codigo SQL de como seria la union de las tablas a travez del INNER JOIN nose si es lo q estabas necesitando es lo que entendi a medias con las tablas q pusiste sino aclara un poco mejor las tablas para poder interpretar mejor.  bueno espero q te sirva


Código
  1. SELECT * FROM t1
  2. INNER JOIN t3
  3. ON(t1.ID=t3.ID)
  4. INNER JOIN t4
  5. ON(t3.FAC=t4.FAC)
  6. INNER JOIN t2
  7. ON(t4.R=t2.R)
  8. WHERE t3.f=10/10/09;
  9.  


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 13 Julio 2010, 19:03 pm
Buenas ahi te dejo codigo SQL de como seria la union de las tablas a travez del INNER JOIN nose si es lo q estabas necesitando es lo que entendi a medias con las tablas q pusiste sino aclara un poco mejor las tablas para poder interpretar mejor.  bueno espero q te sirva


Código
  1. SELECT * FROM t1
  2. INNER JOIN t3
  3. ON(t1.ID=t3.ID)
  4. INNER JOIN t4
  5. ON(t3.FAC=t4.FAC)
  6. INNER JOIN t2
  7. ON(t4.R=t2.R)
  8. WHERE t3.f=10/10/09;
  9.  

Le he hecho como dices pero no funciona te dejo el ejemplo
string consulta = "SELECT * FROM Clientes " +
                 "INNER JOIN Fac_Enc " +
                "ON (Clientes.id_cliente = Fac_Enc.id_cliente) " +
                "INNER JOIN Fac_Deta " +
                "ON (Fac_Enc.Id_Fac=Fac_Deta.Id_Fac) " +
                 "INNER JOIN reparacion " +
                 "ON (Fac_Deta.id_reparacion = reparacion.id_reparacion ) " +
                 "WHERE Fac_Enc.fecha=#" + fecha + "#";

Eroro:Error de sintaxis (falta operador) en la expresión de consulta '(Clientes.id_cliente = Fac_Enc.id_cliente) INNER JOIN Fac_Deta ON (Fac_Enc.Id_Fac=Fac_Deta.Id_Fac) INNER JOIN reparacion ON (Fac_Deta.id_reparacion = reparacion.id_reparacion )'.

PD. Estoy trabajando con Acces


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: xexio en 14 Julio 2010, 00:53 am
pasame las tablas y los campos de las tablas plz, no al consulta  :P


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 14 Julio 2010, 03:10 am
pasame las tablas y los campos de las tablas plz, no al consulta  :P
(http://s3.subirimagenes.com:81/imagen/previo/thump_4799732dda.png) (http://www.subirimagenes.com/imagen-dda-4799732.html)
Alli estan las tablas con sus campos


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: N3r0 en 14 Julio 2010, 04:35 am
Con algo similar a la consulta q te pase tendria q funcionar. yo por lo general uso PostgreSQL o MySQL utilizando SQL lo mas standard posible supongo q en Acces tendria q funcionar de todas formas tendrias q reveer la diagramacion de las tablas para poder realizar las consultas de manera mas simple en la imagen q pusiste vos relacionas las fechas. En una tabla de una base de datos no podes utilizar una fecha como una relacion entre tablas porque no es univoca una fecha incluso esta demas porque ya tenes id_reparacion como FK, en la tabla reparacion tenes informacion que convendria ponerla en la tabla factura tambien tenes dos tablas q podes resumir en una en (id_fac,id_cliente,fecha) y hacer la relacion desde la tabla reparacion agregando un id_fac, porque tenes una relacion 1 a muchos(una factura puede tener muchas reparaciones pero una reparacion se encuentra en una sola factura) de todas formas todo esto depende de lo que necesites que haga tu aplicacion los datos que requiera y las consultas que necesites hacer. esto es lo q observo en tu diagrama tendrias q especificar mas q datos necesitas obtener con la consulta y de que forma.

saludos.


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: xexio en 14 Julio 2010, 21:58 pm
coño! que lo estas haciendo en access....
pues.....jur....
es que uso GNU/Linux y no tengo instalado access pero que vamos es bastante simple lo que pides entonces....
pensaba que era en MySql


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 15 Julio 2010, 01:02 am
coño! que lo estas haciendo en access....
pues.....jur....
es que uso GNU/Linux y no tengo instalado access pero que vamos es bastante simple lo que pides entonces....
pensaba que era en MySql
OK si dices q es muy simple espero respuesta nadie a podido hasta hoy talvez xk es en Acces  alli tienes las tablas la relacion creo esta bien par q entiendas
y te dejo esta consulta q hago en la cual relaciono 3 tablas:

string consulta = "SELECT * FROM clientes INNER JOIN " +
                    "(Fac_Enc INNER JOIN Fac_deta ON Fac_Enc.id_fac = Fac_deta.id_fac )" +
                   " ON Fac_Enc.id_cliente = clientes.id_cliente where Fac_enc.fecha=#" + fecha + "#";

Suerte espero respuesta...


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: N3r0 en 16 Julio 2010, 02:24 am
proba con esta consulta ahora

Código
  1. SELECT * FROM clientes c
  2. INNER JOIN reparacion r
  3. ON(c.id_cliente=r.id_cliente)
  4. INNER JOIN fac_deta fd
  5. ON(r.id_reparacion=fd.id_reparacion)
  6. INNER JOIN fac_enc fe
  7. ON(fd.id_fac=fe.id_fac)
  8. WHERE fe.fecha=10/10/2010;
  9.  


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: xexio en 18 Julio 2010, 00:38 am
pasame la base de datos o subela a MU y pon aquí el enlace a ver si importándola con Kexi puedo hacer algo...


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 19 Julio 2010, 17:52 pm
pasame la base de datos o subela a MU y pon aquí el enlace a ver si importándola con Kexi puedo hacer algo...

http://www.megaupload.com/?d=H4Q8WHIV BD Elctronica


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 19 Julio 2010, 17:54 pm
proba con esta consulta ahora

Código
  1. SELECT * FROM clientes c
  2. INNER JOIN reparacion r
  3. ON(c.id_cliente=r.id_cliente)
  4. INNER JOIN fac_deta fd
  5. ON(r.id_reparacion=fd.id_reparacion)
  6. INNER JOIN fac_enc fe
  7. ON(fd.id_fac=fe.id_fac)
  8. WHERE fe.fecha=10/10/2010;
  9.  


Esta Consulta si Funciona  Pero En Mysql, En Acces  Marca El siguiente Error:
 Error de sintaxis (falta operador) en la expresión de consulta '(c.id_cliente=r.id_cliente) INNER JOIN fac_deta fd ON (r.id_reparacion=fd.id_reparacion) INNER JOIN fac_enc fe ON (fd.id_fac=fe.id_fac )


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: xexio en 19 Julio 2010, 21:15 pm
ya me la estoy bajando, la próxima  vez intenta no colgar un .rar
cuelga un .zip, .tar.gz o algo así  ;D


EDITO: lo acabo de importar ahora a .kexi, ahora ya es tarde pero mañana lo haré y te diré como lo he hecho


Título: Re: Como Hacer consultas de 4 tablas
Publicado por: mr_marley en 21 Julio 2010, 00:45 am
Bueno gente quiero decirles que ya pude hacer mi consulta de las 4 tablas tal como queria.. Y funciona muy bien..
quiero agradecer en especial a Devil_Nero , xexio
por su gran afan de ayudar y sus consejos...
aqui les dejo el codigo me a costado un buen lograrlo per funciono  xD..

Código:
SELECT Fac_Enc.*, Clientes.*, reparacion.*, Fac_deta.*, Fac_Enc.Fecha
FROM (Fac_deta INNER JOIN (Clientes INNER JOIN Fac_Enc ON Clientes.id_Cliente = Fac_Enc.id_Cliente) ON Fac_deta.id_fac = Fac_Enc.id_fac) INNER JOIN reparacion ON (Fac_deta.id_reparacion = reparacion.id_reparacion) AND (Clientes.id_Cliente = reparacion.id_Cliente)
WHERE (((Fac_Enc.Fecha)=#7/15/2010#));
Este codigo Funciona en Acees..

Este otro codigo que me lo paso Devil_Nero
Código:
SELECT * FROM clientes c
INNER JOIN reparacion r
ON(c.id_cliente=r.id_cliente)
INNER JOIN fac_deta fd
ON(r.id_reparacion=fd.id_reparacion)
INNER JOIN fac_enc fe
ON(fd.id_fac=fe.id_fac)
WHERE fe.fecha=10/10/2010;
Funciona Perfecto tambien pero no funciona en Acces... lo probe en MySql y todo bien
 Gracias!!!


Título: Re: Como Hacer consultas de 4 tablas(Solucionado)
Publicado por: xexio en 21 Julio 2010, 00:59 am
bueno, pues nada, si tienes otra duda no dudes en preguntar  :D


Título: Re: Como Hacer consultas de 4 tablas(Solucionado)
Publicado por: N3r0 en 21 Julio 2010, 17:33 pm
De nada, y  cualquier otra duda q tengas con gusto intentare ayudar

Saludos.