Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta doble para un mismo campo, pero distinta condición

Estas en el tema de Consulta doble para un mismo campo, pero distinta condición en el foro de PHP en Foros del Web. Hola a todos, ya se que esta consulta es de hace tiempo, pero es que este ejemplo es muy parecido a lo que busco. Estoy ...
  #1 (permalink)  
Antiguo 29/10/2013, 09:24
 
Fecha de Ingreso: octubre-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Consulta doble para un mismo campo, pero distinta condición

Hola a todos, ya se que esta consulta es de hace tiempo, pero es que este ejemplo es muy parecido a lo que busco.

Estoy empezando en PHP y MySQL y tengo un problema al mostrar en pantalla los datos cuando hay dos tablas distintas relacionadas.

En el ejemplo de esta consulta ¿como muestro en pantalla los nombres de los jugadores de tenis en un partido?. Tenemos los jugadores de tenis relacionados a través de los id de la tabla partidos y de la tabla jugadores por lo que si quiero mostrar los jugadores de un partido y hago algo así:
Código PHP:
Ver original
  1. echo $row['idjugador1']
  2. echo $row['idjugador2']

Me mostrará números ¿como hago para mostrar los nombres si ya tengo relacionadas las 2 tablas partidos y jugadores?.

Muchas gracias por vuestra ayuda.

Última edición por gnzsoloyo; 29/10/2013 a las 10:16
  #2 (permalink)  
Antiguo 29/10/2013, 10:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Mostrar en pantalla el resultado de una consulta no es tema de MySQL. Es algo para resolver en programación (OFF TOPIC en Bases de Datos).

Movido al foro de PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/10/2013, 11:25
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 2 meses
Puntos: 31
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Cita:
Iniciado por ddjulian Ver Mensaje
Hola a todos, ya se que esta consulta es de hace tiempo, pero es que este ejemplo es muy parecido a lo que busco.

Estoy empezando en PHP y MySQL y tengo un problema al mostrar en pantalla los datos cuando hay dos tablas distintas relacionadas.

En el ejemplo de esta consulta ¿como muestro en pantalla los nombres de los jugadores de tenis en un partido?. Tenemos los jugadores de tenis relacionados a través de los id de la tabla partidos y de la tabla jugadores por lo que si quiero mostrar los jugadores de un partido y hago algo así:
Código PHP:
Ver original
  1. echo $row['idjugador1']
  2. echo $row['idjugador2']

Me mostrará números ¿como hago para mostrar los nombres si ya tengo relacionadas las 2 tablas partidos y jugadores?.

Muchas gracias por vuestra ayuda.
Con un ejemplo simple, podrías mostrarnos como relacionaste las 2 tablas?
  #4 (permalink)  
Antiguo 29/10/2013, 11:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Cita:
Iniciado por ddjulian Ver Mensaje
Estoy empezando en PHP y MySQL y tengo un problema al mostrar en pantalla los datos cuando hay dos tablas distintas relacionadas.

(...)

Me mostrará números ¿como hago para mostrar los nombres si ya tengo relacionadas las 2 tablas partidos y jugadores?.

Muchas gracias por vuestra ayuda.
Pues si estás realizando un JOIN en la consulta, sin discriminar los campos, te está devolviendo los nombres. Simplemente deberías indicar que muestre el item del array que corresponda...
¿Cuál es exactamente tu duda en ese sentiido?

¿Podrías postear el código completo de lo que haces?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 29/10/2013, 11:53
 
Fecha de Ingreso: octubre-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Hola, muchas gracias por contestarme.

Las tablas están así:
tbl.equipos
id_equipo
nombre_equipo

tbl_partidos
id_partido
id_equipo1
id_equipo2
gol_equipo1
gol_equipo2

Y las tablas están relacionadas, id_equipo1 y id_equipo2 de la tabla partidos con el id_partido de la tabla equipos.

El código que tengo es este:

$sql = 'SELECT P.*, J1.*, J2.*
FROM tbl_partidos P
INNER JOIN tbl_equipos J1 ON P.id_equipo1 = J1.id_equipo
INNER JOIN tbl_equipos J2 ON P.id_equipo2 = J2.id_equipo;

$resul = mysql_query($sql);
if($resul){
// si hay registros se ejecuta el siguiente if
if(mysql_num_rows($resul) !== 0) {

while($row=mysql_fetch_array($resul)) {
echo $row['id_equipo1'].'<br/>';
echo $row['id_equipo2'].'<br/>';
echo $row['gol_equipo1'].'<br/>';
echo $row['gol_equipo2'].'<br/>';
}

Lo que necesito es que me aparezcan en pantalla los nombres de los equipos pero no se como hacerlo.
  #6 (permalink)  
Antiguo 29/10/2013, 12:19
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 19 años, 5 meses
Puntos: 10
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Hola,

Si no lo he interpretado mal al hacer J1.* y J2.* estas cogiendo todos los datos de la table equipos, por lo que solo tienes que poner el nombre del campo.

Código PHP:
Ver original
  1. $sql = 'SELECT P.*, J1.*, J2.*
  2. FROM tbl_partidos P
  3. INNER JOIN tbl_equipos J1 ON P.id_equipo1 = J1.id_equipo
  4. INNER JOIN tbl_equipos J2 ON P.id_equipo2 = J2.id_equipo;
  5.  
  6. $resul = mysql_query($sql);
  7. if($resul){
  8. // si hay registros se ejecuta el siguiente if
  9. if(mysql_num_rows($resul) !== 0) {
  10.  
  11. while($row=mysql_fetch_array($resul)) {
  12. echo $row['id_equipo1'].$row['nombre_equipo'].'<br/>';
  13. echo $row['id_equipo2'].$row['nombre_equipo'].'<br/>';
  14. echo $row['gol_equipo1'].'<br/>';
  15. echo $row['gol_equipo2'].'<br/>';
  16. }
  #7 (permalink)  
Antiguo 29/10/2013, 12:27
 
Fecha de Ingreso: octubre-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Hola jorgivaz, muchas gracias por tu respuesta, pero así no me funciona, en nombre_equipo me pone en los dos equipos el mismo nombre. Este es el resultado que da:

4C.D. Puerta Bonita
6C.D. Puerta Bonita
1
4
  #8 (permalink)  
Antiguo 29/10/2013, 12:32
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 19 años, 5 meses
Puntos: 10
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Hola,

Eso es xq sacas los dos registros con el mismo nombre (clave) de campo.

Prueba esto:

Código PHP:
Ver original
  1. $sql = 'SELECT P.*, J1.nombre_equipo1, J2.nombre_equipo2
  2. FROM tbl_partidos P
  3. INNER JOIN tbl_equipos J1 ON P.id_equipo1 = J1.id_equipo
  4. INNER JOIN tbl_equipos J2 ON P.id_equipo2 = J2.id_equipo;
  5.  
  6. $resul = mysql_query($sql);
  7. if($resul){
  8. // si hay registros se ejecuta el siguiente if
  9. if(mysql_num_rows($resul) !== 0) {
  10.  
  11. while($row=mysql_fetch_array($resul)) {
  12. echo $row['id_equipo1'].$row['nombre_equipo1'].'<br/>';
  13. echo $row['id_equipo2'].$row['nombre_equipo2'].'<br/>';
  14. echo $row['gol_equipo1'].'<br/>';
  15. echo $row['gol_equipo2'].'<br/>';
  16. }

Si no diferencias en el SELECT el nombre de clave del campo, los dos tendrán el mismo y se sobrescriben al pasar al array PHP.
  #9 (permalink)  
Antiguo 29/10/2013, 12:56
 
Fecha de Ingreso: octubre-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Me da un error de sql, me dice que nombre_equipo1 es desconocido.

Entiendo que si pongo J1.nombre_equipo1 está buscando en la tabla J1 el campo nombre_equipo1 que no está.
  #10 (permalink)  
Antiguo 29/10/2013, 15:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Código MySQL:
Ver original
  1. SELECT P.*, J1.*, J2.*
  2. FROM tbl_partidos P
  3. INNER JOIN tbl_equipos J1 ON P.id_equipo1 = J1.id_equipo
  4. INNER JOIN tbl_equipos J2 ON P.id_equipo2 = J2.id_equipo

ese es el problema, que los alias no están puestos. Si pones esto (es solo una prueba)
Código MySQL:
Ver original
  1. SELECT J1.nombre_equipo nombre_equipo1, J2.nombre_equipo nombre_equipo2
  2. FROM tbl_partidos P
  3. INNER JOIN tbl_equipos J1 ON P.id_equipo1 = J1.id_equipo
  4. INNER JOIN tbl_equipos J2 ON P.id_equipo2 = J2.id_equipo

y luego llamas
Código PHP:
Ver original
  1. ...
  2. echo $row['nombre_equipo1'].'<br/>';
  3. echo $row['nombre_equipo2'].'<br/>';
  4. ...

no deberías tener problema. No uses en la llamada a la base el asterisco. Tráete solo los nombres de campo que necesites y en este caso usa los alias pertinentes.

Última edición por jurena; 30/10/2013 a las 06:36
  #11 (permalink)  
Antiguo 29/10/2013, 17:10
 
Fecha de Ingreso: octubre-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Hola jurena, muchísimas gracias, ahora si que me funciona.

Gracias a todos por vuestra ayuda
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 21:36.