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

Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Estas en el tema de Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN en el foro de Mysql en Foros del Web. Hola hermanos de la comunidad...tengo una duda para ver si me ayudan es sobre la consulta de MySQL sobre consultar los registros en varias tablas. ...
  #1 (permalink)  
Antiguo 01/09/2008, 19:22
 
Fecha de Ingreso: junio-2008
Ubicación: Maracay
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Pregunta Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Hola hermanos de la comunidad...tengo una duda para ver si me ayudan es sobre la consulta de MySQL sobre consultar los registros en varias tablas.
La Base de Datos se llama unidades y estas son, 6 tablas;

tabla: identificacion

unidad ----------> PRIMARY KEY
codclase
codtipo
codmarca
codmodelo
serial_carroceria
serial_motor
num_placa
año
color
codseccion

tabla: clase

codclase---------->PRIMARY KEY
descripcion

tabla: tipo
codtipo------------>PRIMARY KEY
descripcion

tabla: marca
codmarca------------>PRIMARY KEY
descripcion

tabla: modelo
codmodelo------------>PRIMARY KEY
descripcion

tabla: seccion
codseccion------------>PRIMARY KEY
descripcion

Quiero hacer la consulta desde la primera tabla como principal relacionandola con las variables que comienzan por codclase, codtipo, codmarca, codmodelo y codseccion para que me muestren su valor ya que dicho valor lo guardan en sus tablas respectivas.

la consulta la hice asi, pero no se como arreglarla y me daba varios errores

Código PHP:
 <?php
// Rescatar Variables del Formulario
include ('conexion_bd.php');
$link=Conectarse();
$txtUnidad$_GET['txtUnidad'];

$consulta="SELECT identificacion.unidad, clase.codclase, tipo.codtipo, 
marca.codmarca, modelo.codmodelo, identificacion.serial_carroceria, 
identificacion.serial_motor, identificacion.num_placa, 
identificacion.anio, identificacion.color, seccion.codseccion 
FROM identificacion JOIN clase ON identificacion.unidad=clase.codclase 
JOIN tipo ON identificacion.unidad=tipo.codtipo JOIN
marca ON identificacion.unidad=marca.codmarca JOIN modelo ON identificacion.unidad=modelo.codmodelo 
JOIN seccion ON identificacion.unidad=seccion.codseccion WHERE identificacion.unidad= "
.$txtUnidad;  

 

 
           
//WHERE identificacion.codclase";


?>

<table border="1">
  <tr>
    <td align="center">Identificacion de La Unidad</td>
  </tr>
<?php
/*echo "<table border=\"1\">";
      echo "<tr>";
      echo "<td>Identificacion</td>";
      echo "</tr>";*/
$tabla=mysql_query($consulta,$link)or die( "Error en consulta: $consulta, error: " mysql_error() );  
while(
$datos=mysql_fetch_array($tabla)) 
{
    echo 
"<tr>";
    echo        
"<td>Unidad: ".$datos['unidad']."</td>";
    echo        
"<td>Clase: ".$datos['codclase']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Tipo: ".$datos['codtipo']."</td>";
    echo        
"<td>Marca: ".$datos['codmarca']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Modelo: ".$datos['codmodelo']."</td>";
    echo        
"<td>Serial de Carroceria: ".$datos['serial_carroceria']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Serial de Motor: ".$datos['serial_motor']."</td>";
    echo        
"<td>Placa: ".$datos['num_placa']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>A&ntilde;o: ".$datos['anio']."</td>";
    echo        
"<td>Color: ".$datos['color']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Secci&oacute;n: ".$datos['codseccion']."</td>";
    echo 
"</tr>";

}
//echo "</table>";

?>
</table>
Dice que se conecta con la base de datos y abajo muestra este error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\proyecto\buscar.php on line 48.

y de bajo del Warning me muestra nada mas la tabla vacia sin los datos d la consulta

De antemano le agradezco el que me pueda ayudar, estoy novato hermanos..se los agradecere con gusto

Última edición por DjKelvim; 06/09/2008 a las 16:37 Razón: Correccion del PHP
  #2 (permalink)  
Antiguo 02/09/2008, 07:37
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Hola DjKelvim, cómo vas??

Imprime la consulta en pantalla, copiala y ejecútala directamente desde mysql, ahí quizás te arroje un error mas claro. Postea que te sale...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 02/09/2008, 18:32
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Hola DjKelvim
- Has las comparaciones dentro de Where
- Relaciona las tablas con JOINsç

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #4 (permalink)  
Antiguo 02/09/2008, 19:08
 
Fecha de Ingreso: junio-2008
Ubicación: Maracay
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Gracias por la atencion Carxl y Genetix... por cierto acomode el codigo php revisenlo otra vez...pero el error es igual.
el error dice asi en el phpMyAdmin como me dijiste Carxl:

Error
consulta SQL:

SELECT *
FROM identificacion AS t1
INNER JOIN ( tipo AS t2, clase AS t3, marca AS t4, modelo AS t5, seccion AS t6)
ON t1.unidad = t2.codtipo, t1.unidad = t3.codclase, t1.unidad = t4.codmarca, t1.unidad = t5.codmodelo, t1.unidad = t6.codseccion
WHERE t1.unidad = $txtUnidad
LIMIT 0 , 30

MySQL ha dicho:

#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 '.codclase , t1.unidad = t4.codmarca , t1.unidad = t5.codmodelo , t1.unidad = ' at line 1


Ese es el error.

los scripts de php del formulario buscar estan bien ya los revise y el de conexion a la BD tambien....

Última edición por DjKelvim; 02/09/2008 a las 19:20
  #5 (permalink)  
Antiguo 02/09/2008, 20:30
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

No estas realizando correctamente la consulta específicamente los Joins
revisa este ejemplo http://www.mysql-hispano.org/page.php?id=31&pag=9

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #6 (permalink)  
Antiguo 02/09/2008, 21:12
 
Fecha de Ingreso: junio-2008
Ubicación: Maracay
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Ok Genetix voy a chequear la pagina para ver y mañana en el transcurso del dia te cuento como me fue...ok
  #7 (permalink)  
Antiguo 06/09/2008, 16:35
 
Fecha de Ingreso: junio-2008
Ubicación: Maracay
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Hola logre hacer unos cambios en el codigo...las lineas y los errores que mostraba los corregi pero tengo el mismo problema el de la consulta, porque yo quiero mostrar en realidad el campo decripcion de las tablas clase, tipo, marca, modelo y seccion; es decir que en el resultado de la busqueda me muestre en vez de codclase es 1, muestre la descripcion que seria 'Pick-Up Cabina Doble',
Y asi mismo para codtipo que es 2, mostrar campo descripcion que vale 'Camion'
Y viceversa...como haria eso porque la consulta la he modificado tantas veces y no he dado con la solucion

Revisen el codigo donde esta la consulta sql, por favor chuqueenlo y me dicen que puedo hacer.

Aqui esta la BD para vean mas alla del asunto´
Código PHP:
-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
-- 
-- 
Servidorlocalhost
-- Tiempo de generación06-09-2008 a las 18:34:02
-- Versión del servidor5.0.37
-- Versión de PHP5.2.1

SET SQL_MODE
="NO_AUTO_VALUE_ON_ZERO";

-- 
-- 
Base de datos: `unidades`
-- 

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `clase`
-- 

CREATE TABLE `clase` (
  `
codclasetinyint(4NOT NULL auto_increment,
  `
descripcionvarchar(30NOT NULL COMMENT 'Cabina Doble',
  
PRIMARY KEY  (`codclase`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;

-- 
-- 
Volcar la base de datos para la tabla `clase`
-- 

INSERT INTO `claseVALUES (1'Pick-Up Cabina Doble');
INSERT INTO `claseVALUES (2'Pick-Up Cabina Simple');
INSERT INTO `claseVALUES (3'Carga');
INSERT INTO `claseVALUES (4'Tipo Cesta');
INSERT INTO `claseVALUES (7'Grua');
INSERT INTO `claseVALUES (8'Tipo Grua');
INSERT INTO `claseVALUES (9'Sedan 4 Puertas');
INSERT INTO `claseVALUES (10'4x4 Sencillo');
INSERT INTO `claseVALUES (11'Maquinaria Agricola');

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `identificacion`
-- 

CREATE TABLE `identificacion` (
  `
unidadvarchar(7NOT NULL,
  `
codclasetinyint(4NOT NULL,
  `
codtipotinyint(4NOT NULL,
  `
codmarcatinyint(4NOT NULL,
  `
codmodelotinyint(4NOT NULL,
  `
serial_carroceriavarchar(17NOT NULL,
  `
serial_motorvarchar(17NOT NULL,
  `
num_placavarchar(7NOT NULL,
  `
anioyear(4NOT NULL,
  `
colorvarchar(20NOT NULL,
  `
codsecciontinyint(4NOT NULL,
  
PRIMARY KEY  (`unidad`)
ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- 
-- 
Volcar la base de datos para la tabla `identificacion`
-- 

INSERT INTO `identificacionVALUES ('1234456'31213'87Y897TUGTT87YO8Y''65E5VE5W4WFGBNG87''GH9-89L'1998'ROJO'2);
INSERT INTO `identificacionVALUES ('6578876'31213'y9ret45678yougfxd''gyutu6r67rv67578v''nm8-97i'1997'rojo'2);
INSERT INTO `identificacionVALUES ('1224537'41420'64YR8HD83Y74T473I''73HF8302HET645232''JK9-56Y'2003'BLANCO'2);
INSERT INTO `identificacionVALUES ('9083358'1470'7834HT5U59U684IU8''475F756F54895F4JY''AS-89L'1996'VERDE'3);

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `marca`
-- 

CREATE TABLE `marca` (
  `
codmarcatinyint(4NOT NULL auto_increment,
  `
descripcionvarchar(30NOT NULL,
  
PRIMARY KEY  (`codmarca`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

-- 
-- 
Volcar la base de datos para la tabla `marca`
-- 

INSERT INTO `marcaVALUES (1'Chevrolet');
INSERT INTO `marcaVALUES (2'Ford');
INSERT INTO `marcaVALUES (3'Grove');
INSERT INTO `marcaVALUES (4'International');
INSERT INTO `marcaVALUES (5'Jhon Deere');
INSERT INTO `marcaVALUES (6'Nissan');
INSERT INTO `marcaVALUES (7'Toyota');

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `modelo`
-- 

CREATE TABLE `modelo` (
  `
codmodelotinyint(4NOT NULL auto_increment,
  `
descripcionvarchar(20NOT NULL,
  
PRIMARY KEY  (`codmodelo`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;

-- 
-- 
Volcar la base de datos para la tabla `modelo`
-- 

INSERT INTO `modeloVALUES (1'Corolla');
INSERT INTO `modeloVALUES (2'Hilux DC');
INSERT INTO `modeloVALUES (3'Hilux 4x4 Automatico');
INSERT INTO `modeloVALUES (4'Hilux 4x2 Automatico');
INSERT INTO `modeloVALUES (9'Hilux 4x4 Manual');
INSERT INTO `modeloVALUES (10'Hilux 4x2 Manual');
INSERT INTO `modeloVALUES (11'Hembrita');
INSERT INTO `modeloVALUES (12'F-150');
INSERT INTO `modeloVALUES (13'F-350');
INSERT INTO `modeloVALUES (14'F-750');
INSERT INTO `modeloVALUES (15'Land Colorado');
INSERT INTO `modeloVALUES (16'Pick-Up');
INSERT INTO `modeloVALUES (17'Ranger');
INSERT INTO `modeloVALUES (18'Techo Duro');
INSERT INTO `modeloVALUES (19'TMS-250C');
INSERT INTO `modeloVALUES (20'4900');
INSERT INTO `modeloVALUES (21'6605');
INSERT INTO `modeloVALUES (22'6610');

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `seccion`
-- 

CREATE TABLE `seccion` (
  `
codsecciontinyint(4NOT NULL auto_increment,
  `
descripcionvarchar(50NOT NULL,
  
PRIMARY KEY  (`codseccion`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

-- 
-- 
Volcar la base de datos para la tabla `seccion`
-- 

INSERT INTO `seccionVALUES (1'Departamento Mantenimiento Transmision Centro - Ge');
INSERT INTO `seccionVALUES (2'Mantenimiento de Lineas');
INSERT INTO `seccionVALUES (3'Apoyo Tecnico y Logistico');
INSERT INTO `seccionVALUES (4'Mantenimiento de Sub-Estacion San Geronimo A');
INSERT INTO `seccionVALUES (5'Mantenimiento de Sub-Estacion San Geronimo B');
INSERT INTO `seccionVALUES (6'Mantenimiento de Sub-Estacion La Horqueta');
INSERT INTO `seccionVALUES (7'Mantenimiento de Sub-Estacion Santa Teresa');
INSERT INTO `seccionVALUES (8'Mantenimiento de Sub-Estacion Sur');

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `tipo`
-- 

CREATE TABLE `tipo` (
  `
codtipotinyint(4NOT NULL auto_increment,
  `
descripcionvarchar(30NOT NULL,
  
PRIMARY KEY  (`codtipo`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

-- 
-- 
Volcar la base de datos para la tabla `tipo`
-- 

INSERT INTO `tipoVALUES (1'Camion');
INSERT INTO `tipoVALUES (2'Camion Grua');
INSERT INTO `tipoVALUES (3'Land Cruiser');
INSERT INTO `tipoVALUES (4'Pick-Up');
INSERT INTO `tipoVALUES (5'Grua TMS-250');
INSERT INTO `tipoVALUES (6'Rustico');
INSERT INTO `tipoVALUES (7'Tractor Agricola');
INSERT INTO `tipoVALUES (8'Sedan'); 

Última edición por DjKelvim; 06/09/2008 a las 16:40
  #8 (permalink)  
Antiguo 07/09/2008, 21:21
 
Fecha de Ingreso: junio-2008
Ubicación: Maracay
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Hola, gracias a mi perseverancia logre hacer lo que queria con la cosulta..les cuento he añadido alias a los campos de descripcion seleccionados. La razón es que a todos los he llamado descripcion. Podría haberlo hecho trayéndome los datos usando el índice numérico del array, pero es menos claro y los cambios de orden me dieron problemas. Ahora me toca usar esta consulta y mostrar los datos cambiando los nombres de los campos por los alias.

Código PHP:
<?php
// Rescatar Variables del Formulario
include ('conexion_bd.php');
$link=Conectarse();
$txtUnidad$_GET['txtUnidad'];

$consulta="SELECT identificacion.unidad, clase.descripcion as descripcionclase,
tipo.descripcion as descripciontipo, marca.descripcion as descripcionmarca,
modelo.descripcion as descripcionmodelo, identificacion.serial_carroceria,
identificacion.serial_motor, identificacion.num_placa, identificacion.anio,
identificacion.color, seccion.descripcion as descripcionseccion  
FROM identificacion 
INNER JOIN clase ON clase.codclase = identificacion.codclase 
INNER JOIN tipo ON tipo.codtipo = identificacion.codtipo 
INNER JOIN marca ON identificacion.codmarca = marca.codmarca 
INNER JOIN modelo ON modelo.codmodelo = identificacion.codmodelo 
INNER JOIN seccion ON seccion.codseccion = identificacion.codseccion 
WHERE identificacion.unidad=$txtUnidad"



?>

<table border="1">
  <tr>
    <td align="center">Identificacion de La Unidad</td>
  </tr>
 
<?php
/*echo "<table border=\"1\">";
      echo "<tr>";
      echo "<td>Identificacion</td>";
      echo "</tr>";*/
$tabla=mysql_query($consulta,$link)or die( "Error en consulta: $consulta, error: " mysql_error() );  
while(
$datos=mysql_fetch_array($tabla)) 
{
    echo 
"<tr>";
    echo        
"<td>Unidad: ".$datos['unidad']."</td>";
    echo        
"<td>Clase: ".$datos['descripcionclase']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Tipo: ".$datos['descripciontipo']."</td>";
    echo        
"<td>Marca: ".$datos['descripcionmarca']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Modelo: ".$datos['descripcionmodelo']."</td>";
    echo        
"<td>Serial de Carroceria: ".$datos['serial_carroceria']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Serial de Motor: ".$datos['serial_motor']."</td>";
    echo        
"<td>Placa: ".$datos['num_placa']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>A&ntilde;o: ".$datos['anio']."</td>";
    echo        
"<td>Color: ".$datos['color']."</td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo        
"<td>Secci&oacute;n: ".$datos['descripcionseccion']."</td>";
    echo 
"</tr>";

}
//echo "</table>";
 
?>
</table>
</body>
Mil y millon de gracias a todos los colaboradores en este tema...
gracias por su aporte porqe de verdad me sirvieron bastante...
quizas recurra otra vez al foro
  #9 (permalink)  
Antiguo 08/09/2008, 10:20
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Como relaciono 1 tabla con 5 tablas para consultar registros con JOIN

Que bueno que lo hayas resulto
Solo evita poner código de programación en este subforo.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
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 09:55.