Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Arrow Tablas Relacionadas y SQL

Hola,
Tengo una BD de Química Relacionada en Access y quizá por este lado no se me entienda, por ello he tratado de asemejar lo que deseo obtener con un ejemplo casi similar al de abajo donde se relacionan Tabla1-> Tabla2-> Tabla3:
Código:
 
TABLA1
IdDepto     Nombre
D1          Departamento1
D2          Departamento2
D3          Departamento3
 
TABLA2
IdOficina    Descripcion   IdDepto
OF1          Oficina1      D2
OF2          Oficina2      D1
OF3          Oficina3      D1
 
TABLA3
Muebles       IdOficina
Mesa          OF1
Silla         OF1
Vitrina       OF1
Estante       OF2
Librero       OF2
Mesa          OF2
Silla         OF3
Librero       OF3
Mesa          OF3
Vitrina       OF3
- ¿Cúal sería el código SQL para mostrar únicamente de D1 y la OF3 los valores de Muebles?
- ¿Cúal sería el código SQL para mostrar TODOS los Muebles del D1 (OF2 + OF3)

De repente digais que no está muy bien Relacionada (confeccionada) mi BD, el objetivo de la BD Química es mostrar en alguna línea de mi código las Valencias de No Metales DIFERENCIANDO las negativas de las positivas (Ej. Cloro= -1+1+3+5+7). Para el caso IdDepto llegaría a ser el Nombre del No Metal (Elemento), IdOficina vendría a ser como "positivas" ó "negativas", etc, cada una de ellas contendría en la Tabla3 (Muebles) sus valores (-1+1+3+5+7). Pues trato de crear TRadioButtons en tiempo de ejecución según el Elemento (No Metal) seleccionado, crearía la CANTIDAD de TRadioButtons que tenga cada uno como valores y de Caption mostraría sus contenidos; pero esa es otra pregunta, primero necesito salir de dudas de aquellas 2 consultas que les mencioné, por favor

Última edición por Deiv fecha: 14-08-2007 a las 15:51:22.
Responder Con Cita
  #2  
Antiguo 12-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Deiv
Que base de datos usas?
Si puedo te ayudo, con gusto.
Saludos
Responder Con Cita
  #3  
Antiguo 12-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Uy!.... que olvido, pues estoy con Access, mis perdones. Y en mi aplicación estoy trabajando con TADOQuery.

Última edición por Deiv fecha: 12-08-2007 a las 16:40:59.
Responder Con Cita
  #4  
Antiguo 12-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Coloca la tabla aqui en un zip, vere que puedo hacer.
Si tenes el codigo del programa y no es muy grande lo puedes subir tambien.
Saludos
Responder Con Cita
  #5  
Antiguo 12-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Wink

En realidad, ni tengo Delphi a mano, ni escribo de casa sino que desde un Cyber, lo traeré mañana para que lo observen, pero..... en realidad es solo ese ejemplo que puse, que si viera la forma de: cómo encarases el código SQL relacionado a mi pregunta sería suficiente para darme cuenta; pues aquellos ítemes que puse de ejemplo son los mismos que tengo preparado en mi BD hecha en Access.
Lo otro la Aplicación "Química" aún no está muy bien confeccionada, tampoco tendré problemas con la creación de los objetos, solo requiero esas 2 consultas inicilamente por fis.
Responder Con Cita
  #6  
Antiguo 12-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que dificil sin ver, bueno para mi, aqui hay un ejemplo, no se si es lo que buscas, necesito la base de datos, soy novato, no lo se hacer al aire.
Ejemplo:
Código SQL [-]
SELECT Clientes.CodCliente, Clientes.NombreCliente, CxCobrar.CodTransac, CxCobrar.TipoTransac, CxCDetalle.Documento, CxCDetalle.Monto, CxCDetalle.TipoDocumento
FROM (Clientes INNER JOIN CxCobrar ON Clientes.CodCliente = CxCobrar.CodCliente) INNER JOIN CxCDetalle ON CxCobrar.CodTransac = CxCDetalle.Documento;
Esto es en base a otra tabla, pero te indica la secuencia.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 12-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Gracias Caral por responder nuevamente, pero te prometo que tal como escribí textualmente en mi primer post, así igualito lo tengo la BD en Access (sin mas ítemes). De todos modos mañana lo adjunto. Y relacionado a mi post:
Cita:
Empezado por Deiv
- ¿Cúal sería el código SQL para mostrar únicamente de D1 y la OF3 los valores de Muebles?
Cita:
Empezado por Deiv
- ¿Cúal sería el código SQL para mostrar TODOS los Muebles del D1 (OF2 + OF3)
Ahí es precisamente donde voy lidiando. Voy a revisar tu ejemplo (me es nuevo el Inner Join) pero además ¿cómo obtener dicho filtrado sobre mis preguntas???
Responder Con Cita
  #8  
Antiguo 12-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Truco:
Usas access, pues este tiene un generador de consultas, puedes hacer una consulta usando el asistente y ver el codigo sql que genera, lo puedes pulir lo que necesites, se aprende mucho.
Este codigo, lo copias y lo pegas en delphi, funciona.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 13-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Gracias por el Truco en esto había pensado aquella vez que empezaba con SQL (recientemente) me resultaba más cómodo copiarlo que pensar el código correspondiente, observé algo en ese "trajín" de muchas consultas que realicé trabajando en Access (quizá esté Yo mal) nunca vi la sentencia where, hablo inclusive de tablas relacionadas, ¿será aquí donde debo entender que existen muchas versiones de SQL?? ; pues si fuera así relacionado a mi post como aplicar esta sentencia where.?
Responder Con Cita
  #10  
Antiguo 13-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Deiv
(...)pues si fuera así relacionado a mi post como aplicar esta sentencia where.?
La clausura where va al final de una consulta (excepto cuando hay una clausura ORDER BY, O HAVING).

Recuerda que el orden es:
SELECT: Lo que se desea obtener
FROM: De donde hay que obtener
WHERE: Alguna condición que deban cumplir

Una instrucción WHERE está constituída por al menos una condición. Es decir:

WHERE condicion

Donde condición puede tiene esta forma:

(ElCampo OPERADOR parametro). Ejemplo de operadores: =, <=, >=, AND, OR, NOT.

Bueno... como ejemplo:

- ¿Cúal sería el código SQL para mostrar únicamente de D1 y la OF3 los valores de Muebles?

Código SQL [-]
SELECT Tabla3.Muebles
FROM (Tabla1 INNER JOIN Tabla2 ON Tabla1.idDepto = Tabla2.idDepto)
         INNER JOIN Tabla3 ON Tabla2.idOficina = Tabla3.idOficina
WHERE (Tabla1.idDepto = D1) AND (Tabla2.idOficina = OF3)

Y la expresión "equivalente":
Código SQL [-]
SELECT Tabla3.Muebles
FROM Tabla1, Tabla2, Tabla3
WHERE (Tabla1.idDepto = Tabla2.idDepto) AND (Tabla2.idOficina = Tabla3.idOficina) AND (Tabla1.idDepto = D1) AND (Tabla2.idOficina = OF3)

La instruccion INNER JOIN sirve para obtener un encuentro natural entre las tablas y se desea obtener en una consulta los campos que pertenecen a una o más tablas. Omite los nulos. En cambio emplear por condiciones del tipo AND es más liviana: no es restrictiva con respecto a los nulos.

Espero que te sea util mi breve y corto resumen introductorio al SQL.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 13-08-2007 a las 04:08:25.
Responder Con Cita
  #11  
Antiguo 14-08-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Thumbs up

Gracias por tan didáctica explicación. He probado vuestro código y, por alguna razón sale este error:
Código:
Raised exception class EOleException with message 'El parámetro D1 no tiene un valor predeterminado'
De tanto averiguar y hacer algunos "experimentos" con el código en Access, pude comprobar que sololamente le faltan comillas a "D1" y "OF3" y luego funciona a la perfección.
Agradecer a Delphius y Caral por la preocupación prestada. Gracias amigos es bueno saber que siempre vamos a disponer de vuestra ayuda en el Foro.
Saludos
Deiv
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reporte tablas relacionadas silviodp Impresión 0 06-01-2005 15:25:36
Update en Tablas Relacionadas gluglu Conexión con bases de datos 0 01-10-2004 19:42:50
Tablas relacionadas + commit brandolin Firebird e Interbase 11 28-04-2004 11:12:04
Consultar 2 tablas relacionadas mlara SQL 3 06-08-2003 10:08:26
tablas relacionadas y update sql joanajj Conexión con bases de datos 4 05-08-2003 13:17:23


La franja horaria es GMT +2. Ahora son las 23:02:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi