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 29-08-2007
Avatar de vivys27
vivys27 vivys27 is offline
Registrado
 
Registrado: ago 2007
Posts: 8
Poder: 0
vivys27 Va por buen camino
Talking relacionar 3 tablas

Holassss

Recien comienzo con el tema de la programacion y otras yerbas .
Asi que su ayuda me viene de 10.

Tengo la siguiente duda

Tengo 3 tablas:
-organismos
-oficinas
-tramites

donde oficinas tiene como claves foraneas a OOID_organismo y TID_tramite. Oficina tiene como clave principal OID_oficina.
Ahora bien, la tabla tramites tiene varios campos, como por ejemplo nombre, costo, etc... yo quiero que mediante un list selecciono un determinado organismo y me tire el listado de los tramites asociados a ese organismo con sus campos.

No se si los embrolle . Les doy las gracias por anticipado

Última edición por vivys27 fecha: 29-08-2007 a las 17:44:37. Razón: me falto aclarar
Responder Con Cita
  #2  
Antiguo 29-08-2007
Fumaxclamp Fumaxclamp is offline
Miembro
 
Registrado: may 2006
Posts: 14
Poder: 0
Fumaxclamp Va por buen camino
Son una sentencia sql sencilla bastara, y quedaría mas o menos de la siguiente manera

Select * from organismos
left join oficinas using (OOID_organismo)
left join tramites using (TID_tramite)

si ese no te funciona utilize este

Select * from organismos
left join oficinas on organismos.OOID_organismo = oficinas.OOID_organismo
left join tramites on organismos.TID_tramite = tramites.TID_tramite

esto dependiendo de que base de datos utilices
Responder Con Cita
  #3  
Antiguo 29-08-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
para conseguir to cometido, en la tabla trámites, debes de tener un campo que la relacione con la tabla organismos. Cuando hayas identificado el campo, en el IDE, entonces a la tabla trámites debes asignarles los valores correspondienstes como por ejemplo:

Código Delphi [-]
Tabla_Tramites.MastarDataSource := DataSource_Tramites;
Tabla_Tramites.MasterFields := 'Campo_en_comun';

ojalá me entiendas. Saludos
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 30-08-2007
Avatar de vivys27
vivys27 vivys27 is offline
Registrado
 
Registrado: ago 2007
Posts: 8
Poder: 0
vivys27 Va por buen camino
Question no funciona

else ($_POST[buscarpororganismo])// esto toma el valor del boton
{

$var2= $_POST[organismo];// este el valor del list

$SQL = "Select * from organismos
left join oficinas on organismos.OORID_organismo = oficinas.OORID_organismo
left join tramites on organismos.TID_Tramite = tramites.TID_Tramite";

$result = mysql_query($SQL);
while ($row=mysql_fetch_array($result))
{

echo'// aqui hago que me muestre en una tabla los valores de la tabla tramites
<table width="400" border="1">

<tr>
<td width="200">Nombre del tramite: </td>
<td width="250">'.$row[T_Nombre].'</td>
</tr>


* Perdon me olvide de aclarar que la sentencia era en SQL. EL problema que me da es con el fetch_array y en que parte tomaria el valor del campo que selecciono con list?

*GRacias por los aportes
Responder Con Cita
  #5  
Antiguo 30-08-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Estás utilizando php o algo así, si es así creo que no podría darte mucha ayuda. Además lo que quieres conseguir, creo que es imposible utilizando solamente una sentencia, y la única forma de haerla que yo conozco, es como te mencionaba anteriormente. con dos componentes en un aplicación Win32
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #6  
Antiguo 30-08-2007
Fumaxclamp Fumaxclamp is offline
Miembro
 
Registrado: may 2006
Posts: 14
Poder: 0
Fumaxclamp Va por buen camino
si pudieras comentar cual es el error quete marca seria mas facil, asi nada mas a simple vista en tu instruccion

<td width="250">'.$row[T_Nombre].'</td>

le fantan las comiilas al nombre del campo, osea asi

<td width="250">'.$row["T_Nombre"].'</td> ademas de que no tienes encabezados solo listados
Responder Con Cita
  #7  
Antiguo 30-08-2007
Avatar de vivys27
vivys27 vivys27 is offline
Registrado
 
Registrado: ago 2007
Posts: 8
Poder: 0
vivys27 Va por buen camino
Unhappy

Si comente el error . Es con el fetch_array

El asunto es asi, tengo un list (organismo)donde selecciono el organismo y presiono un boton (buscarpoorganismo)que me envia a otra pagina.php que me supuestamente me mostraria una tabla con los campos de la tabla tramites. Probe lo k me sugeriste y aun asi no funciona. Con el $_POST tomo los valores que me envia el formulario principal, pero no se luego de hacer el join como comparo el valor de lo seleccionado mediante el list, me entendes?
Responder Con Cita
  #8  
Antiguo 30-08-2007
Fumaxclamp Fumaxclamp is offline
Miembro
 
Registrado: may 2006
Posts: 14
Poder: 0
Fumaxclamp Va por buen camino
ok mira a lo que pusiste en lo ultimo al parecer esmos mal enfocados y en si no es un error lo que te marca, si no que no despliega lo que tu quieres desplegar.

$row=mysql_fetch_array($result) lo unico que va a hacer es recorrer toda la seleccion que hiciste en la sentencia sql.

tu pasar un valor de otro formulario y la almacenas en var2 y ahora lo que quieres es que deacuerdo a lo que tenga var2 es lo que se va a desplegar, pala eso son los join pero como los tienes en tu codigo ellos despliegan todo para delimitarlos te hace falta la clausula where y te quedadia mas o menos asi.

$SQL = "Select * from organismos
left join oficinas on organismos.OORID_organismo = oficinas.OORID_organismo
left join tramites on organismos.TID_Tramite = tramites.TID_Tramite Where organismo='$var2'";

suponiendo que organismo sea el nombre del campo de tu tabla organismos

con esto la consulta ya esta delimitada al organismo que seleccionarte en el formulario anterior y el mysql_fetch_array lo va a desplegar.

esto claro esta si te entendi tu planteamiento que en si no erra un error de codigo si no un error de ejecusion.

suerte.
Responder Con Cita
  #9  
Antiguo 04-09-2007
Avatar de vivys27
vivys27 vivys27 is offline
Registrado
 
Registrado: ago 2007
Posts: 8
Poder: 0
vivys27 Va por buen camino
Thumbs up por fin!!!

"SELECT * FROM tramites INNER JOIN categorias ON tramites.TCID_Categorias=categorias.CID_Categorias
INNER JOIN oficinas ON tramites.TOID_Oficina=oficinas.OID_oficina
INNER JOIN organismos ON organismos.ORID_organismo=oficinas.OORID_organismo
WHERE organismos.ORID_organismo=$var2";

Bueh, asi quedo mi select , al fin pudo salir, mas bien era error de sintaxis. gracias por la ayuda!!!!!
Responder Con Cita
  #10  
Antiguo 20-03-2008
carlos77 carlos77 is offline
Registrado
 
Registrado: may 2007
Posts: 3
Poder: 0
carlos77 Va por buen camino
Relacionar tres tablas

Hola, tengo un problema similar con relacionar 3 tablas o mas:

prestamos
========
id_socios
id_libros


libros
======
id_libros


socios
======
id_socios


este es mi problema mi formulario principal es (prestamos) de aqui parten dos relaciones una socios y la otra a libros, como puedo relacionar prestamos si solo me permite una relacion, por medio de mastersource y masterfield, si lo hago a traves de un query los adotable no responden.
En visualfox de una tabla podias hacer mas de una relacion, la pregunta es como se puede hacer en delphi?
Responder Con Cita
  #11  
Antiguo 24-03-2008
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
depende de como quieres que se visualicen los datos en los controles y que comportamiento esperas de ellos, podrias explicarlo
Responder Con Cita
  #12  
Antiguo 24-03-2008
carlos77 carlos77 is offline
Registrado
 
Registrado: may 2007
Posts: 3
Poder: 0
carlos77 Va por buen camino
Relacionar tres tablas

prestamos
========
id_socios
id_libros


libros
======
id_libros


socios
======
id_socios

mi formulario principal es prestamos, primero elijo el socio al cual le prestare el libro entonces llamo a socios para tomar su numero de socio (id_socio), este ya lo tengo relacionado por medio de mastersource, marterfield, luego llamo a libros para agregar un libro para ese socio, pero no lo puedo relacionar porque la relacion con prestamo ya ha sido ocupada por socios, por lo que tengo que pasar el numero de libro por variables y asignarselo al campo en cuestion.


un ejemplo muy comun y mas utilizado es el de facturacion
1) tomas el cliente para el cual le haras la factura
2) le vas agregando productos que se llevará

la factura en este caso debe este relacionada con el cliente por ej. de id_cliente y simultanemente factura debe estar relacionada con id_articulo.
Lo que creo que en delphi no se pueden hacer relaciones simultaneas
Responder Con Cita
  #13  
Antiguo 24-03-2008
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
Bueno las relaciones propiamente dichas las establecerias efectivamente en la base de datos, no en el ide de delphi, el uso de relaciones mediante MasterSource es para despliegue maestro-detalle (relaciones 1-n) con fines de visualizacion, y no implica una relacion entre las tablas en el sentido estricto, ahora viendo el detalle que planteas, podrias enlazar tu tabla libros con la de prestamos mediante controles lookup (dblookupcombobox, dblookuplistbox).
Responder Con Cita
  #14  
Antiguo 25-03-2008
carlos77 carlos77 is offline
Registrado
 
Registrado: may 2007
Posts: 3
Poder: 0
carlos77 Va por buen camino
Relacionar tres tablas

Las relaciones que se hacen en access (MDB) hay alguna manera que surtan efecto en el entorno de delphi?
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
Problema al Relacionar Tablas dfmco999 Tablas planas 3 15-11-2006 05:40:01
relacionar mas de dos tablas dmagui Firebird e Interbase 2 30-06-2005 16:40:54
Problema al relacionar dos tablas asegurpe Conexión con bases de datos 1 28-04-2004 16:27:45
relacionar dos tablas digital Conexión con bases de datos 1 20-11-2003 09:54:53
Como Relacionar 2 Tablas andrestsas Varios 4 03-08-2003 21:09:10


La franja horaria es GMT +2. Ahora son las 05:30:42.


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