Foros del Web » Programando para Internet » PHP »

Hacer un select complejo

Estas en el tema de Hacer un select complejo en el foro de PHP en Foros del Web. Hola a todos, haber si podeis ayudarme, k estoy atascado, y nose como seguir. Me explico,tengo 4 tablas, ya rellenas con datos, k son las ...
  #1 (permalink)  
Antiguo 27/04/2009, 10:37
 
Fecha de Ingreso: abril-2009
Mensajes: 15
Antigüedad: 15 años
Puntos: 0
Hacer un select complejo

Hola a todos, haber si podeis ayudarme, k estoy atascado, y nose como seguir. Me explico,tengo 4 tablas, ya rellenas con datos, k son las siguientes:

Tabla categoria:id_categoria(PK),categoria
Tabla jornada:id_jornada(PK),fecha
Tabla equipos: id_equipos (PK),id_categoria(FK,)nombre,campo
Tabla partidos: id_partidos(PK),id_jornada(FK),id_categoria(FK),eq _local(FK) (id_equipos),eq_visitante(FK)(id_equipos),hora,res ultado.

Luego tengo hecho un combobox, donde me aparecen todas las categorias, y dependiendo de la categoria k seleccionas, se te muestra otro combobox con todos los equipos que militan en esa categoria. Y una vez seleccionado ese equipo, me gustaria ver una tabla con el equipo seleccionado, y con los siguientes datos (jornada,eq_local,eq_visitante,campo,hora,resultad o).

Hasta aqui, creo k me explicado bien, yo con el ultimo combobox obtengo el id_equipo, y la guardo en una variable $equipo:

$equipo=$_POST['nombre2'];
print "$equipo";

y con la siguiente sentencia obtengo mas o menos lo que yo quiero, pero todo con numeros:

$result = mysql_query("SELECT * FROM partidooos WHERE eq_local = '$equipo' OR eq_visitante = '$equipo'", $link);

if ($row = mysql_fetch_array($result)){

echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Jornada</b></td> \n";
echo "<td><b>Equipo Local</b></td> \n";
echo "<td><b>Equipo Visitante</b></td> \n";
echo "<td><b>Hora</b></td> \n";
echo "<td><b>Resultado</b></td> \n";
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["id_jornada"]."</td>\n";
echo "<td>".$row["eq_local"]."</td>\n";
echo "<td>".$row["eq_visitante"]."</td>\n";
echo "<td>".$row["hora"]."</td>\n";
echo "<td>".$row["resultado"]."</td>\n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
} else {
echo "&iexcl; La base de datos est&aacute; vacia !";
}

Y obtengo algo parecido a esto:

Si por ejemplo selecciono el deportivo, el cual es el id_equipos=12
Jornada Equipo Local Equipo Visitante Hora Resultado
1 12 15 17:00 0-0
2 3 12 20:00 1-0
Pero yo lo que quiero es obtener los nombres en vez de los id_equipos, y no se como hacerlo,ademas de meter en la tabla el "campo".

Me podriais ayudar??? Estoy desesperado y nose como hacerlo.

Muchas gracias
  #2 (permalink)  
Antiguo 28/04/2009, 01:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Hacer un select complejo

Te daré mi opinión. Creo que esa no es la mejor estructura para esos datos. Naturalmente, podrás lograr lo que quieres pasando dos veces por la tabla equipos para traerte ese dato, pero estarás limitando mucho las posibilidades de una base como esta. ¿Cómo averiguas los puntos, el total de goles de cada equipo? tendrías que comprobar en los dos campos, etc.
Mi consejo para una parte de los datos, la referida a partidos y resultados, es el siguiente:
Tabla partidos: id_partidos(PK),id_jornada(FK),id_categoria(FK), campo, hora...
tabla resultados: id_resultado (PK), id_partido(FK),id_equipo (FK), localvisitante (ej. datos 1/2) goles (int), res (v/d/e), aunque este último es un valor que podrás calcular.
eso como mínimo y guardarías por ejemplo este resultado del partido 3 entre los equipos equipo1-equipo2 con un resultado 4-2.
id_resultado|id_partido|id_equipo| localvisitante| goles |res
1|3|equipo1|1|4|v
2|3|quipo2|2|2|d
Luego te resultaría mucho más fácil todo.

Si de todas formas consideras que tu estructura es mejor, suficiente o simplemente no quieres cambiarla, mira este post donde QUIMFV resuelve ese problema.
http://www.forosdelweb.com/f86/consu...t-join-599132/

Última edición por jurena; 28/04/2009 a las 06:19
  #3 (permalink)  
Antiguo 28/04/2009, 15:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Hacer un select complejo

Tema trasladado desde MySQL

http://www.forosdelweb.com/f21/funci...-datos-413499/
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:29.