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

hacer una consulta a 3 tablas

Estas en el tema de hacer una consulta a 3 tablas en el foro de Mysql en Foros del Web. hola buenas noches, necesito me ayuden o me den ejemplos de como podria construir una consulta a tres tablas relacionadas por el id... mis tablas ...
  #1 (permalink)  
Antiguo 27/06/2012, 19:48
 
Fecha de Ingreso: junio-2012
Ubicación: maracaibo
Mensajes: 36
Antigüedad: 12 años, 5 meses
Puntos: 0
hacer una consulta a 3 tablas

hola buenas noches, necesito me ayuden o me den ejemplos de como podria construir una consulta a tres tablas relacionadas por el id...

mis tablas son..
1. usuario: tengo , cédula, nombrecompleto.
2. cursos: aquí tengo, idcurso, metacurso,profesor.
3. curso_meta: aqui el, id_curso, se relaciona con el id de curso...

necesito que cuando introoduzca la cedula del profesor me diga su nombre y que cursos esta dando....

lei un poco que con un INNER JOIN. pero noc bien como hacerlo... lo que tengo es esto:
"SELECT idnumber,teacher, metacourse FROM mdl_user, mdl_course,mdl_course_meta INNER JOIN idnumber LIKE '$cedula' ON id.mdl_course=id.mdl_course_meta ON mdl_course";



Coloco el idnumber LIKE '$cedula' porque al entrar la cedula me muestre los datos, noc si sera necesario... me podrian ayudar.. xfa..
  #2 (permalink)  
Antiguo 28/06/2012, 01:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: hacer una consulta a 3 tablas

Código MySQL:
Ver original
  1. FROM (mdl_user u INNER JOIN mdl_course c ON u.idnumber=c.idnumber)
  2.          INNER JOIN mdl_course_meta cm ON c.id_curso =cm.id_curso
  3. WHERE u.idnumber='$cedula';

Substituye el * por la lista de campos que necesites....(aliasTabla.nombrecampo, ...)

No uses LIKE si puedes usar = es mucho mas rapido...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 28/06/2012, 18:39
 
Fecha de Ingreso: junio-2012
Ubicación: maracaibo
Mensajes: 36
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: hacer una consulta a 3 tablas

Gracias por tu ayuda... este es mi codigo con la ayuda que me diste.... pero me sale un mensaje, me podrias ayudar de nuevo porfa: Column 'idnumber' in field list is ambiguous
.. ese mensaje me sale cuando intruzco la cedula..
mysql_select_db("$hostname_moodle",$moodle);
$consultar = "SELECT idnumber,teacher, metacourse FROM (mdl_user u INNER JOIN mdl_course c ON u.idnumber=c.idnumber) INNER JOIN mdl_course_meta cm ON c.id_curso =cm.id_curso WHERE u.idnumber='$cedula'";
$query = mysql_query($consultar) or die(mysql_error());
$total_reg = mysql_num_rows($query );
if($total_reg > 0){
while($result=mysql_fetch_array($query )){
echo "id: ".$result['u.idnumber']."<br>";
echo "Profesor: ".$result['teacher']."<br>";
  #4 (permalink)  
Antiguo 28/06/2012, 18:41
 
Fecha de Ingreso: junio-2012
Ubicación: maracaibo
Mensajes: 36
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: hacer una consulta a 3 tablas

Gracias por tu ayuda... este es mi codigo con la ayuda que me diste.... pero me sale un mensaje, me podrias ayudar de nuevo porfa: Column 'idnumber' in field list is ambiguous
.. ese mensaje me sale cuando intruzco la cedula..
mysql_select_db("$hostname_moodle",$moodle);
$consultar = "SELECT idnumber,teacher, metacourse FROM (mdl_user u INNER JOIN mdl_course c ON u.idnumber=c.idnumber) INNER JOIN mdl_course_meta cm ON c.id_curso =cm.id_curso WHERE u.idnumber='$cedula'";
$query = mysql_query($consultar) or die(mysql_error());
$total_reg = mysql_num_rows($query );
if($total_reg > 0){
while($result=mysql_fetch_array($query )){
echo "id: ".$result['u.idnumber']."<br>";
echo "Profesor: ".$result['teacher']."<br>";
  #5 (permalink)  
Antiguo 29/06/2012, 01:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: hacer una consulta a 3 tablas

Column 'idnumber' in field list is ambiguous

Taducción

Columna 'idnumber' de la lista de campos es ambigua.

Eso quiere decir que esta en dos tablas y no sabe de que tabla tiene que sacarla agrega el alias de la tabla.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 01/07/2012, 11:14
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: hacer una consulta a 3 tablas

que significan las letras "u" y "c" ene l codigo que le colocas?

Código PHP:
Ver original
  1. SELECT *
  2. FROM (mdl_user u INNER JOIN mdl_course c ON u.idnumber=c.idnumber)
  3. * * * * *INNER JOIN mdl_course_meta cm ON c.id_curso =cm.id_curso
  4. WHERE u.idnumber='$cedula';
  #7 (permalink)  
Antiguo 01/07/2012, 12:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: hacer una consulta a 3 tablas

Son alias de las tablas
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 10/07/2012, 06:56
 
Fecha de Ingreso: junio-2012
Ubicación: maracaibo
Mensajes: 36
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: hacer una consulta a 3 tablas

holaaa, necesto me des una ayudita aqui, por favor.
este es mi codigo.

$consultar = "SELECT u.username, u.idnumber, c.id, c.fullname, cm.name FROM (mdl_user u INNER JOIN mdl_course c ON u.id=c.id) INNER JOIN mdl_course_categories cm ON c.id =cm.id WHERE u.idnumber='$cedula'";
$query = mysql_query($consultar) or die(mysql_error());
$total_reg = mysql_num_rows($query );
if($total_reg >0){
?>

<table width="358" height="59" border="1">
<tr>
<th scope="col">Cedula&nbsp;</th>
<th scope="col">Categoria&nbsp;</th>
<th scope="col">Nombre del Profesor&nbsp;</th>
<th scope="col">Curso&nbsp;</th>
<th scope="col">Curso nombre&nbsp;</th>
</tr>
<?php
while($result=mysql_fetch_array($query )){
?>
<tr>
<td><?php echo $result['u.username'] ?>&nbsp;</td>
<td><?php echo $result['u.idnumber'] ?>&nbsp;</td>
<td><?php echo $result['c.id'] ?>&nbsp;</td>
<td><?php echo $result['c.fullname'] ?>&nbsp;</td>
<td><?php echo $result['cm.name'] ?>&nbsp;</td>
</tr>
<?php

el problema es que no me muetsra los datos en la tablas... si ven algun error diganme xfa..
  #9 (permalink)  
Antiguo 10/07/2012, 07:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: hacer una consulta a 3 tablas

$result['u.username']

quita esos alias....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 10/07/2012, 07:22
 
Fecha de Ingreso: junio-2012
Ubicación: maracaibo
Mensajes: 36
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: hacer una consulta a 3 tablas

gracias amigo...

Etiquetas: join, 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 13:37.