Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda para plantear un SELECT

Estas en el tema de ayuda para plantear un SELECT en el foro de Mysql en Foros del Web. Hola a todos, estoy intentando hacer una consulta a mi base de datos pero tengo un error: aca las tablas: tabla egresado: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 08/02/2011, 15:12
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
ayuda para plantear un SELECT

Hola a todos, estoy intentando hacer una consulta a mi base de datos pero tengo un error:

aca las tablas:

tabla egresado:

Código SQL:
Ver original
  1. CREATE TABLE `egresado` (
  2.   `NUM_CED_EGR` INT(11) NOT NULL,
  3.    `NOM_EGR` CHAR(25) DEFAULT NULL,
  4.   `APE_EGR` CHAR(25) DEFAULT NULL,
  5.     PRIMARY KEY  (`NUM_CED_EGR`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


tabla programa:

Código SQL:
Ver original
  1. CREATE TABLE `programa` (
  2.   `COD_PRO` INT(11) NOT NULL,
  3.    `NOM_PRO` CHAR(50) DEFAULT NULL,
  4.   PRIMARY KEY  (`COD_PRO`)  
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

tabla opciones_grado


Código SQL:
Ver original
  1. CREATE TABLE `opciones_grado` (
  2.   `COD_OPC_GRA` INT(11) NOT NULL,
  3.   `OPC_GRA` CHAR(30) DEFAULT NULL,
  4.   PRIMARY KEY  (`COD_OPC_GRA`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

tabla programas_egresado:


Código SQL:
Ver original
  1. CREATE TABLE `programas_egresado` (
  2.   `NUM_CED_EGR` INT(11) NOT NULL,
  3.   `COD_PRO` INT(11) NOT NULL,
  4.   `FEC_ING` DATE DEFAULT NULL,
  5.   `FEC_EGR` DATE DEFAULT NULL,
  6.   `FEC_GRA` DATE DEFAULT NULL,
  7.   `NUM_ACT_GRA` INT(11) DEFAULT NULL,
  8.   PRIMARY KEY  (`NUM_CED_EGR`,`COD_PRO`),
  9.   KEY `FK_PROGRAMAS_EGRESADO2` (`COD_PRO`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

y tabla opciones_grado_egresado:

Código SQL:
Ver original
  1. CREATE TABLE `opciones_grado_egresados` (
  2.   `NUM_CED_EGR` INT(11) NOT NULL,
  3.   `COD_OPC_GRA` INT(11) NOT NULL,
  4.   `DES_OPC_GRA` VARCHAR(100) DEFAULT NULL,
  5.   `COD_PRO` INT(11) DEFAULT NULL,
  6.   PRIMARY KEY  (`NUM_CED_EGR`,`COD_OPC_GRA`),
  7.   KEY `FK_OPCIONES_GRADO_EGRESADOS2` (`COD_OPC_GRA`),
  8.   KEY `COD_PRO` (`COD_PRO`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Y lo que necesito es que en una sola consulta traer:

NOM_EGR - NOM_PRO - FEC_ING - FEC_EGR - FEC_GRA - OPC-GRA -DES_OPC_GRA

Y no he podido.
Hice el select de la siguiente forma pero me genera un erro de sintaxis

Código MySQL:
Ver original
  1. e.NUM_CED_EGR, e.NOM_EGR, e.APE_EGR, p.NOM_PRO, og.OPC_GRA, pe.FEC_ING, pe.FEC_EGR, pe.FEC_GRA, oge.DES_OPC_GRA
  2. FROM egresado e,
  3.  programa p,
  4. opciones_grado og,
  5.  programas_egresado pe,
  6.  opciones_grado egresados oge
  7. WHERE e.NUM_CED_EGR=oge.NUM_CED_EGR
  8.  and  og.COD_OPC_GRA=oge.COD_OPC_GRA
  9.  and p.COD_PRO=pe.COD_PRO
  10. and p.COD_PRO=oge.COD_PRO
  11. and e.NUM_CED_EGR=1110490997;

y el erro es el siguiente:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'oge WHERE e.NUM_CED_EGR = oge.NUM_CED_EGR and og.COD_OPC_GRA = oge.COD_OPC_GRA a' at line 1

Como podria entonces hacer esta consulta??

agradezco alguien me pueda colaborar

gracias
  #2 (permalink)  
Antiguo 09/02/2011, 02:30
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: ayuda para plantear un SELECT

Los INNER JOINs son INFINITAMENTE más eficientes que unir las tablas directamente.

Te faltaba un guión en "opciones_grado_egresados" (entre grado y egresados)

Código SQL:
Ver original
  1. SELECT
  2. e.NUM_CED_EGR, e.NOM_EGR, e.APE_EGR, p.NOM_PRO,
  3. og.OPC_GRA, pe.FEC_ING, pe.FEC_EGR, pe.FEC_GRA,
  4. oge.DES_OPC_GRA
  5. FROM egresado e
  6. INNER JOIN  opciones_grado_egresados oge ON
  7. e.NUM_CED_EGR=oge.NUM_CED_EGR
  8. INNER JOIN opciones_grado og ON
  9. oge.COD_OPC_GRA=og.COD_OPC_GRA
  10. INNER JOIN programa p ON
  11. oge.COD_PRO=p.COD_PRO  
  12. INNER JOIN programas_egresado pe ON
  13. p.COD_PRO=pe.COD_PRO
  14. WHERE e.NUM_CED_EGR=1110490997;
  #3 (permalink)  
Antiguo 09/02/2011, 06:49
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: ayuda para plantear un SELECT

Hola, no me habia fijado en esa pequeña falla
pero aun me sigue saliendo un error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Â INNER JOIN programas_egresado pe ON p.COD_PRO = pe.COD_PRO WHERE e.NUM_CED' at line 1

Código SQL:
Ver original
  1. SELECT
  2. e.NUM_CED_EGR, e.NOM_EGR, e.APE_EGR, p.NOM_PRO,
  3. og.OPC_GRA, pe.FEC_ING, pe.FEC_EGR, pe.FEC_GRA,
  4. oge.DES_OPC_GRA
  5. FROM egresado e
  6. INNER JOIN  opciones_grado_egresados oge ON
  7. e.NUM_CED_EGR=oge.NUM_CED_EGR
  8. INNER JOIN opciones_grado og ON
  9. oge.COD_OPC_GRA=og.COD_OPC_GRA
  10. INNER JOIN programa p ON
  11. oge.COD_PRO=p.COD_PRO  
  12. INNER JOIN programas_egresado pe ON
  13. p.COD_PRO=pe.COD_PRO
  14. WHERE e.NUM_CED_EGR=1110490997;

Ya revise todas las tablas tienen bien las FK

Gracias
  #4 (permalink)  
Antiguo 09/02/2011, 06:52
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: ayuda para plantear un SELECT

Cita:
Iniciado por oscarbt Ver Mensaje
Hola, no me habia fijado en esa pequeña falla
pero aun me sigue saliendo un error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Â INNER JOIN programas_egresado pe ON p.COD_PRO = pe.COD_PRO WHERE e.NUM_CED' at line 1

Código SQL:
Ver original
  1. SELECT
  2. e.NUM_CED_EGR, e.NOM_EGR, e.APE_EGR, p.NOM_PRO,
  3. og.OPC_GRA, pe.FEC_ING, pe.FEC_EGR, pe.FEC_GRA,
  4. oge.DES_OPC_GRA
  5. FROM egresado e
  6. INNER JOIN opciones_grado_egresados oge ON
  7. e.NUM_CED_EGR=oge.NUM_CED_EGR
  8. INNER JOIN opciones_grado og ON
  9. oge.COD_OPC_GRA=og.COD_OPC_GRA
  10. INNER JOIN programa p ON
  11. oge.COD_PRO=p.COD_PRO
  12. INNER JOIN programas_egresado pe ON
  13. p.COD_PRO=pe.COD_PRO
  14. WHERE e.NUM_CED_EGR=1110490997;

Ya revise todas las tablas tienen bien las FK

Gracias
repito la respuesta porque veo que se le añadio  #&160opciones_grado_egresados oge ON en la respuesta anterior

Etiquetas: select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:18.