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

consulta de consulta entre varias tablas

Estas en el tema de consulta de consulta entre varias tablas en el foro de Mysql en Foros del Web. tengo el siguiente grafico y la siguiente duda la estructura es la siguiente @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original /*Table structure for table `abortos` */ ...
  #1 (permalink)  
Antiguo 04/12/2013, 22:35
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años
Puntos: 0
consulta de consulta entre varias tablas

tengo el siguiente grafico y la siguiente duda



la estructura es la siguiente

Código MySQL:
Ver original
  1. /*Table structure for table `abortos` */
  2.  
  3. DROP TABLE IF EXISTS `abortos`;
  4.  
  5. CREATE TABLE `abortos` (
  6.   `codigo` varchar(10) NOT NULL,
  7.   `fecha` date default NULL,
  8.   `observacion` text NOT NULL,
  9.   UNIQUE KEY `id` (`id`)
  10.  
  11. /*Data for the table `abortos` */
  12.  
  13. /*Table structure for table `diag` */
  14.  
  15.  
  16. CREATE TABLE `diag` (
  17.   `diagnosticoid` tinyint(4) NOT NULL auto_increment,
  18.   `vacunocod` tinyint(4) default NULL,
  19.   `fecha` date default NULL,
  20.   `veterinario` varchar(100) default NULL,
  21.   `preñez` varchar(10) default NULL,
  22.   `fpparto` date default NULL,
  23.   PRIMARY KEY  (`diagnosticoid`)
  24.  
  25. /*Data for the table `diag` */
  26.  
  27. /*Table structure for table `reproduccion` */
  28.  
  29. DROP TABLE IF EXISTS `reproduccion`;
  30.  
  31. CREATE TABLE `reproduccion` (
  32.   `codigo` varchar(10) NOT NULL,
  33.   `Servicio` tinyint(4) default NULL,
  34.   `diagnostico` tinyint(4) default NULL,
  35.   `Parto` tinyint(4) default NULL,
  36.   `aborto` tinyint(4) default NULL,
  37.   `numero` varchar(10) NOT NULL,
  38.   UNIQUE KEY `id` (`id`),
  39.   KEY `codigo` (`codigo`),
  40.   KEY `diagnostico` (`diagnostico`),
  41.   KEY `Parto` (`Parto`),
  42.   KEY `Servicio` (`Servicio`),
  43.   KEY `aborto` (`aborto`),
  44.   CONSTRAINT `reproduccion_ibfk_6` FOREIGN KEY (`aborto`) REFERENCES `abortos` (`id`),
  45.   CONSTRAINT `reproduccion_ibfk_1` FOREIGN KEY (`codigo`) REFERENCES `vacunos` (`codigo`),
  46.   CONSTRAINT `reproduccion_ibfk_3` FOREIGN KEY (`diagnostico`) REFERENCES `diag` (`diagnosticoid`),
  47.   CONSTRAINT `reproduccion_ibfk_4` FOREIGN KEY (`Parto`) REFERENCES `parto` (`partoid`),
  48.   CONSTRAINT `reproduccion_ibfk_5` FOREIGN KEY (`Servicio`) REFERENCES `servicios` (`servicioid`)
  49.  
  50. /*Data for the table `reproduccion` */
  51.  
  52. insert  into `reproduccion`(`id`,`codigo`,`Servicio`,`diagnostico`,`Parto`,`aborto`,`numero`) values (1,'1',1,NULL,NULL,NULL,'1');
  53.  
  54. /*Table structure for table `servicios` */
  55.  
  56. DROP TABLE IF EXISTS `servicios`;
  57.  
  58. CREATE TABLE `servicios` (
  59.   `servicioid` tinyint(4) NOT NULL auto_increment,
  60.   `vacunocod` tinyint(4) default NULL,
  61.   `fecha` date default NULL,
  62.   `tipo` varchar(50) default NULL,
  63.   `toro` varchar(50) default NULL,
  64.   `observacion` varchar(50) default NULL,
  65.   PRIMARY KEY  (`servicioid`)
  66.  
  67. /*Data for the table `servicios` */
  68.  
  69. insert  into `servicios`(`servicioid`,`vacunocod`,`fecha`,`tipo`,`toro`,`observacion`) values (1,1,'2013-12-04',NULL,'yankunta',NULL);
  70.  
  71. /*Table structure for table `vacunos` */
  72.  
  73. DROP TABLE IF EXISTS `vacunos`;
  74.  
  75. CREATE TABLE `vacunos` (
  76.   `codigo` varchar(20) NOT NULL,
  77.   `nombre` varchar(50) NOT NULL,
  78.   `nacimiento` date default NULL,
  79.   `sexo` varchar(50) default NULL,
  80.   `raza` tinyint(50) default NULL,
  81.   `peso` varchar(10) default NULL,
  82.   `madrecod` varchar(100) NOT NULL,
  83.   `padrecod` varchar(100) NOT NULL,
  84.   `foto` varchar(500) default NULL,
  85.   PRIMARY KEY  (`codigo`)
  86.  
  87. /*Data for the table `vacunos` */
  88.  
  89. insert  into `vacunos`(`codigo`,`nombre`,`nacimiento`,`sexo`,`raza`,`peso`,`madrecod`,`padrecod`,`foto`) values ('1','200','2010-01-01','HEMBRA',0,NULL,'176','Raul',''),('10','214',NULL,'HEMBRA',0,NULL,'','',NULL),('11','676',NULL,'HEMBRA',0,NULL,'','',NULL),('12','694',NULL,'HEMBRA',0,NULL,'','',NULL),('13','Raul','2007-01-01','MACHO',0,NULL,'214','668',NULL),('14','630',NULL,'HEMBRA',0,NULL,'','',NULL),('2','193','2010-01-02','HEMBRA',0,NULL,'','200',NULL),('24','patricia','2013-01-20','HEMBRA',0,NULL,'Daniel','UNP','E:\\allen\\visual\\FAZ\\fotos\\24.jpg'),('3','182',NULL,'HEMBRA',0,NULL,'','',NULL),('4','186',NULL,'HEMBRA',0,NULL,'','',NULL),('5','204',NULL,'HEMBRA',0,NULL,'','',NULL),('6','176',NULL,'HEMBRA',0,NULL,'','',NULL),('7','650',NULL,'HEMBRA',0,NULL,'','',NULL),('8','668',NULL,'HEMBRA',0,NULL,'','',NULL),('9','662',NULL,'HEMBRA',0,NULL,'','',NULL);
  90.  
  91. /* Procedure structure for procedure `mostrarvacas` */

El problema esta en que no puedo hacer una consulta entre el dato que guarda la tabla reproduccion que debe de estar relacionada con las subtablas servicio, partos y diagnostico (diag)

cuando uso esta consulta


Código MySQL:
Ver original
  1. SELECT  v.`nombre`,s.`fecha`, d.`fecha` , p.`fecha` FROM reproduccion AS r, vacunos AS v, servicios AS s, diag AS d, parto AS p WHERE v.nombre = '200' AND s.`servicioid`= r.`Servicio` AND
  2. d.`diagnosticoid`= r.`diagnostico` AND
  3. p.`partoid`= r.`Servicio` AND
  4.  r.`codigo` = v.`codigo`
  #2 (permalink)  
Antiguo 04/12/2013, 22:52
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años
Puntos: 0
Respuesta: consulta de consulta entre varias tablas

intente este codigo que vi en otro post, y me funciono
Código MySQL:
Ver original
  1. SELECT  v.`nombre`,s.`fecha`, d.`fecha` , p.`fecha`
  2. FROM reproduccion AS r
  3. LEFT JOIN vacunos AS v ON r.`codigo` = v.`codigo`
  4. LEFT JOIN servicios AS s ON r.`Servicio` = s.`servicioid`
  5. LEFT JOIN diag AS d ON r.`diagnostico` = d.`diagnosticoid`
  6. LEFT JOIN parto AS p ON r.`Parto` = p.`partoid`
  7.  
  8. WHERE v.nombre = '200'

pero alguien me explica por favor los usos del inner join left join, y los demás

Etiquetas: null, select, tabla, tablas
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 19:46.