MySQL - Error en consulta multiple

   
Vista:

Error en consulta multiple

Publicado por Sonia (5 intervenciones) el 21/07/2013 20:43:39
Tengo esta consulta y me da el siguiente error:
Subquery returns more than 1 row

...

="select (select NAME_P from players_atp where ID_P = ID1_O) as nombre1, (select NAME_P from players_atp where ID_P = ID2_O) as nombre2, (select NAME_T from tours_atp where NAME_T = ID_T AND rank_t = '3' or rank_t = '4' or rank_t = '5' ), ID_B_O, K1, K2, TOTAL from odds_atp" ;


.....

echo "<td bgcolor='#$color'>".$array['name']."</td>";
echo "<td bgcolor='#$color'>".$array['nombre1']."</td>";
echo "<td bgcolor='#$color'>".$array['nombre2']."</td>";
echo "<td bgcolor='#$color'>".$array['K1']."</td>";
echo "<td bgcolor='#$color'>".$array['K2']."</td>";
echo "<td bgcolor='#$color'>".$array['TOTAL']."</td>";


Que estoy haciendo mal????
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Error en consulta multiple

Publicado por xve (898 intervenciones) el 21/07/2013 21:12:02
Hola Sonia, estas haciendo un select de subconsultas, por lo que todas tienes que devolver un único registro. Por lo visto, hay alguno que devuelve mas de uno.

prueba las subconsultas por separado, veras cual es la que te devuelve mas de un registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en consulta multiple

Publicado por Sonia (5 intervenciones) el 21/07/2013 21:33:21
Gracias Xve por contestar tan rapido.

Si es cierto, el ultimo select devuelve varios registros.

Pero necesito que me visualice todos los registros que cumplan las condiciones, como tendria que hacerlo?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Error en consulta multiple

Publicado por xve (898 intervenciones) el 22/07/2013 07:16:19
Hola Sonia, para ello, yo utilizaría left join

algo así:
1
2
3
4
SELECT *
FROM tabla1 t1 LEFT JOIN tabla2 t2 ON t1.campo=t2.campo
LEFT JOIN tabla3 t3 ON t3.campo=t2.campo
WHERE ...

http://dev.mysql.com/doc/refman/5.0/es/left-join-optimization.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en consulta multiple

Publicado por Sonia (5 intervenciones) el 23/07/2013 16:20:20
Hola Xve

segui tu consejo y quedo asi mi consulta pero me devuelve el siguiente error :
Unknown table 'players_atp'
no entiendo cual es el fallo. Me puedes ayudar?

SELECT players_atp.*, tours_atp.*, odds_atp.*
FROM odds_atp LEFT JOIN players_atp AS nombre1 ON (players_atp.ID_P = odds_atp.ID1_O) LEFT JOIN players_atp AS nombre2 ON (players_atp.ID_P = odds_atp.ID2_O) LEFT JOIN tours_atp ON ( tours_atp.ID_T= odds_atp.ID_T_O ) WHERE tours_atp.rank_t='3' OR tours_atp.rank_t='4' OR tours_atp.rank_t='5' ORDER BY tours_atp.rank_t S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Error en consulta multiple

Publicado por xve (898 intervenciones) el 23/07/2013 20:41:47
Creo que el problema esta, en que desconoce la tabla players_atp... prueba así:
SELECT nombre1.*, tours_atp.*, odds_atp.* ...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en consulta multiple

Publicado por Sonia (5 intervenciones) el 23/07/2013 21:23:53
Gracias pero Lamento decir que ahora me sale este otro error:
Unknown column 'players_atp.ID_P' in 'on clause'

SELECT nombre1.*, tours_atp.*, odds_atp.* FROM odds_atp LEFT JOIN players_atp AS nombre1 ON (players_atp.ID_P = odds_atp.ID1_O) LEFT JOIN players_atp AS nombre2 ON (players_atp.ID_P = odds_atp.ID2_O) LEFT JOIN tours_atp ON ( tours_atp.ID_T= odds_atp.ID_T_O ) WHERE tours_atp.rank_t='3' OR tours_atp.rank_t='4' OR tours_atp.rank_t='5' ORDER BY tours_atp.rank_t ASC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar