none
Como Hacer consultas de 4 tablas RRS feed

  • Pregunta

  • Hola primeramente a todos..

    esta ocacion tengo una duda el cual es la siguiente

    Tengo 4 tablas

    T1 ,T2, T3, T4

    campos de las tablas

    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,F 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..dejo mi correo marley_hco@hotmail.com

    Gracias!!


    sábado, 10 de julio de 2010 16:38

Respuestas

  • Lo que decía: Access obliga a usar paréntesis para validar la sintaxis.

    Este es un foro de SQL Server, así que en ese sentido (en principio) no te podemos ayudar mucho. De todos modos, haz lo que te decía: en Access puedes crearte de modo gráfico la consulta (en la pestaña de vistas) y copiarla a tu código. No es muy complicado...

    • Marcado como respuesta Marley87 martes, 13 de julio de 2010 15:56
    martes, 13 de julio de 2010 7:41

Todas las respuestas

  • select ....

    from t1 inner join t2 on t1.id=52.id

               inner join t3

                    inner join t4 on t3.fac=t4.fac

    on t1.id?t3.id

                   where ... lo que esa


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    sábado, 10 de julio de 2010 17:21
    Moderador
  • select ....

    from t1 inner join t2 on t1.id=52.id

               inner join t3

                    inner join t4 on t3.fac=t4.fac

    on t1.id?t3.id

                   where ... lo que esa


    Comparte lo que sepas, aprende lo que no sepas (FGG)


    He hecho como dices y no funciona te dejo el ejemplo y el error para que veas que anda mal

     string consulta = "Select * from Clientes " +
                        " inner join  reparacion on clientes.id_cliente = reparacion.id_cliente " +
                        "inner join Fac_Enc " +
                        "inner join Fac_deta  on Fac_Enc.id_fac = Fac_deta.id_fac " +
                        "on Clientes.id_cliente = Fac_Enc.id_cliente where fecha=#" + fecha + "#";

    error: Error de sintaxis (falta operador) en la expresión de consulta 'clientes.id_cliente = reparacion.id_cliente inner join Fac_Enc inner join Fac_deta  on Fac_Enc.id_fac = Fac_deta.id_fac on Clientes.id_cliente = Fac_Enc.id_cliente'.

    lunes, 12 de julio de 2010 15:33
  • Con el permiso de Miguel,

    Los campos de combinación para la tabla Fac_Enc están en un sitio incorrecto. Corregido sería así:

    string consulta = "Select * from Clientes " +
                        " inner join  reparacion on clientes.id_cliente = reparacion.id_cliente " +
                        "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 " +
                        "where fecha=#" + fecha + "#";

    Por cierto, el separador de cadena en SQL Server no es la almohadilla, sino la comilla simple (')

    lunes, 12 de julio de 2010 16:07
  • Con el permiso de Miguel,

    Los campos de combinación para la tabla Fac_Enc están en un sitio incorrecto. Corregido sería así:

    string consulta = "Select * from Clientes " +
                        " inner join  reparacion on clientes.id_cliente = reparacion.id_cliente " +
                        "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 " +
                        "where fecha=#" + fecha + "#";

    Por cierto, el separador de cadena en SQL Server no es la almohadilla, sino la comilla simple (')

    Mismo Error

    Error de sintaxis (falta operador) en la expresión de consulta 'clientes.id_cliente = reparacion.id_cliente 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'.

    # + Fecha+# es porq ue es una fehca por eso uso #

    Estoy usando acces sera por eso que no puedo hacer la consulta..??

    lunes, 12 de julio de 2010 16:33
  • En SQL Server esa sentencia (quitando las almohadillas) funcionaría. Tal vez Access tenga otros detalles que hagan que falle, así que deberías preguntar en ese foro para que te respondan mejor.

    En cualquier caso, siempre puedes intentar crearte la vista de forma gráfica y copiar la instrucción que te genera. De ese modo estarás seguro que funciona

    lunes, 12 de julio de 2010 16:38
  • 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

    lunes, 12 de julio de 2010 16:55
  • Lo que decía: Access obliga a usar paréntesis para validar la sintaxis.

    Este es un foro de SQL Server, así que en ese sentido (en principio) no te podemos ayudar mucho. De todos modos, haz lo que te decía: en Access puedes crearte de modo gráfico la consulta (en la pestaña de vistas) y copiarla a tu código. No es muy complicado...

    • Marcado como respuesta Marley87 martes, 13 de julio de 2010 15:56
    martes, 13 de julio de 2010 7:41
  • Lo que decía: Access obliga a usar paréntesis para validar la sintaxis.

    Este es un foro de SQL Server, así que en ese sentido (en principio) no te podemos ayudar mucho. De todos modos, haz lo que te decía: en Access puedes crearte de modo gráfico la consulta (en la pestaña de vistas) y copiarla a tu código. No es muy complicado...


    Ya lo pude hacer como dijiste me fui acces y le busque hasta generar la consulata  alli mimo y ya nada mas copie el codigo Gracias por estar al pendiente xD
    martes, 13 de julio de 2010 15:57