Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up No me sale esta consulta ¿Por que?

Hola amigos, tengo la siguiente tabla:
Código SQL [-]
Create table Obras(#Obra = proyecto
Nro_Ob  int unsigned auto_increment not null primary key,
Nombre_Obra  varchar(80),
Cliente int unsigned,
Fecha_Contrato date,
Precio float,
Moneda int unsigned,
Fecha_I date,
Plazo varchar(20),
Lugar  varchar(60),
Encargado int unsigned,
Firmado_Parte_Contraria varchar(50),#Nombre del cliente  o representante que firmo el contrato
Firmado_Por int unsigned,#empleado que aprobo o dio el visto bueno
Estado varchar(1),# A=Activo,T=Terminado,etc.
Descripcion varchar(100),
foreign key(Moneda)references Moneda(Cod_mo)on update cascade,
foreign key(Firmado_Por)references Empleado(ci)on delete set null on update cascade,
foreign key(Encargado)references Empleado(ci)on delete set null on update cascade,
foreign key(Cliente)references Cliente(Cod_Cli)on delete set null on update cascade
)engine=innodb;
aqui la tabla empleado//he puesto solo los campos de interes
Código SQL [-]
create table Empleado(
ci int unsigned not null primary key,
nombre varchar(30)
)engine=innodb;
Aqui la tabla Moneda
Código SQL [-]
create table Moneda(
Cod_Mo int unsigned not null primary key,
Sigla varchar(5)
)engine=innodb;
aqui la tabla la tabla cliente
Código SQL [-]
create table Cliente(
Cod_Cli int unsigned auto_increment not null primary key,
Razon_Social varchar(30)
)engine=innodb;
Bueno de algunas tabla como les dije solo he puesto los campos de interes .
Bueno.... resulta que quiero seleccionar todos los registros de la tabla obras de manera que los campos que son foraneos(Foreign key) en ves de mostrarme el codigo o nro correspondiente me muestre mas bien el nombre que corresponde ese codigo, es decir en el caso del cliente que me muestre la Razon_Social y no el Cod_Cli, en el caso de Moneda me muestre la sigla y no el Cod_Mo,en el caso Encargado y Firmado_Por, me salga el nombre y no el CI(Carnet de Identidad) esto para ambos casos tanto para el atributo Encargado y Firmado_por de la tabla obras.
Cave saber que lo he intando con esta consulta:
Código SQL [-]
Select
Nro_Ob as Nro,
Nombre_Obra,
Razon_Social as Nombre_Cliente,
Fecha_Contrato,
Precio,
Sigla,
Fecha_I as Fecha_Inicio,
Plazo,
Lugar,
Nombre as Encargado,
Firmado_Parte_Contraria,
Nombre as Aprobado_Por,
Estado as Estado_Actual,
Descripcion from Obras o,Empleado e,Moneda m,Cliente c 
Where o.Cliente=c.Cod_Cli and o.Encargado=e.ci and o.Moneda=m.Cod_Mo 
and o.Firmado_Por=e.ci;
Pero por alguna razon el motor me bota una respuesta vacia;
Que estoy haciendo de mal?
Muchas gracias de antemano.....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #2  
Antiguo 01-02-2009
jrperezt jrperezt is offline
Registrado
 
Registrado: sep 2006
Posts: 7
Poder: 0
jrperezt Va por buen camino
Hola.

Yo no controlo mucho de MySql, te contesto por la experiencia que tengo con otras bases de datos. El problema es que a lo mejor te falta algún registro en alguna de las tablas con la que estás relacionando la tabla "Obras", o que en algunos de los campos relacionados tiene un "null".

Imaginate que en algunos registros tienes en los campos "Encargado" y "Firmado_por" el valor null, y quieres que te aparezcan en la consulta, entonces tendrás que usar algo así.

Código:
Select
Nro_Ob as Nro,
Nombre_Obra,
Razon_Social as Nombre_Cliente,
Fecha_Contrato,
Precio,
Sigla,
Fecha_I as Fecha_Inicio,
Plazo,
Lugar,
Firmado_Parte_Contraria,
Estado as Estado_Actual,
Descripcion,
e.Nombre as Encargado,
f.Nombre as Aprobado_Por
from Obras o
  LEFT JOIN Empleado e ON o.Encargado=e.ci
      LEFT JOIN Empleado f ON o.Firmado_Por=f.ci
     ,Moneda m,Cliente c
Where o.Cliente=c.Cod_Cli and  o.Moneda=m.Cod_Mo
Espero que esto te sirva, por lo menos de orientación.
Responder Con Cita
  #3  
Antiguo 01-02-2009
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
A mi me funciona, pero.... fijate de imcluir el Alias a cada campo segun corresponda

Código SQL [-]
from Obras o,Empleado e,Moneda m,Cliente c

por ejemplo

e.Nombre as Encargado,
m.Dolares as Precio

etc.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 02-02-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb Gracias

Ok amigo al parecer funciona, gracias por el aporte y perdona por tardar en responderte..
Saludos desde Bolivia.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
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
mysql una consulta que no me sale Gaim2205 SQL 1 24-02-2008 14:14:49
Está bien esta consulta Select count? enecumene MySQL 12 30-08-2007 03:54:29
No me sale lo que quiero en esta consulta... El_Raso SQL 5 29-11-2005 08:46:45
query report ¿Por q sale sale solo el primer registro? acl_gandalf Impresión 2 31-03-2005 02:14:20
Ayuda con esta consulta? danytorres SQL 1 10-10-2003 20:29:15


La franja horaria es GMT +2. Ahora son las 00:34:29.


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