Comunidad de diseño web y desarrollo en internet online

Error con selects anidados desde php

Citar            
MensajeEscrito el 18 Ene 2011 06:40 pm
Buenas:

Tengo un problemilla haciendo ésta consulta desde php:

Código :

$consulta = "SELECT pais FROM paises WHERE id = (SELECT id_pais FROM relacion_pais_idioma WHERE id_idioma=$idioma)";
   $resultado = mysql_query($consulta, $link);
      while($fila=mysql_fetch_row($resultado)){
      echo $fila[0];
   }


Me dice:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\pruebas_eclipse\MoviesReference\recursos\formularios\formulario_registro.php on line 19

Las tablas y campos que indico en la consulta estan bien, estoy probando con consultas simples y puedo acceder a todos sin problemas. El problema viene cuando hago la anidación :-S.

¿Alguna idea? Gracias!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 18 Ene 2011 07:02 pm
Vale, el problema es que la subconsulta me devuelve más de 1 fila. Cómo podría hacerlo entonces?

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 18 Ene 2011 07:30 pm
Al final lo hice con JOIN, pero no sé si habría otra manera de hacerlo.

Código :

SELECT p.pais FROM paises p JOIN relacion_pais_idioma rel ON p.id = rel.id_pais WHERE rel.id_idioma = $idioma

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 18 Ene 2011 10:08 pm
si lo puedes hacer cambiando el igual de tu consulta por un in con eso toma todos los valores resultados

Código PHP :

$consulta = "SELECT pais FROM paises WHERE id in (SELECT id_pais FROM relacion_pais_idioma WHERE id_idioma=$idioma)";
   $resultado = mysql_query($consulta, $link);
      while($fila=mysql_fetch_row($resultado)){
      echo $fila[0];
   }

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

chrome
Citar            
MensajeEscrito el 18 Ene 2011 11:15 pm

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 19 Ene 2011 10:58 am
Perfecto, tendré en cuenta ambas respuestas.

Si, he estado investigando un poquillo por ahí, y veo que la mejor solución es la de utilizar JOIN.

Venga, pues muchas gracias!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.