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

Buscar array en sql

Estas en el tema de Buscar array en sql en el foro de Mysql en Foros del Web. Hola! Cómo puedo buscar un array en un sql? La idea es que desde un array con string no solo números, busque cada término en ...
  #1 (permalink)  
Antiguo 09/03/2012, 12:14
Avatar de Shaito  
Fecha de Ingreso: agosto-2010
Mensajes: 383
Antigüedad: 13 años, 8 meses
Puntos: 37
Buscar array en sql

Hola!

Cómo puedo buscar un array en un sql? La idea es que desde un array con string no solo números, busque cada término en sql.

¿Alguien sabe?


Gracias de antemano, un saludo
__________________
Shaito Hiraga - Diseñador CSS
  #2 (permalink)  
Antiguo 09/03/2012, 12:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Buscar array en sql

Partamos de la base que MySQL no tiene datos de tipo array, como sí los hay en otros DBMS, pr tanto no puedes usarlos para una consulta en este motor.
Por otro lado, una búsqueda basada en un array de datos de tipo múltiple, no es algo que un DBMS que yo conozca pueda manejar. No puedes buscar un datos de un montón sin especificar cada dato contra qué campo de qué tabla los vas a buscar.
Da la impresión de que recién estas entrando en el tema de SQL.
¿Me equivoco?
Tal vez si puedes explicar un poco mejor acerca de qué consultarás y contra qué dtipos de datos realizarás la búsqueda, sería algo más fácil aconsejarte método que realmente se puedan usar en SQL...
__________________
¿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 09/03/2012, 12:48
Avatar de Shaito  
Fecha de Ingreso: agosto-2010
Mensajes: 383
Antigüedad: 13 años, 8 meses
Puntos: 37
Respuesta: Buscar array en sql

Hola

Lo que hago es una búsqueda normal en sql, los datos del resultado los meto en un array y es con todos esos datos con los que quiero buscar nuevamente.

La cosa especial es que, en esta segunda vez, puedo mostrar los resultados por orden de la primary key

Código PHP:
Ver original
  1. $array_id = array(substr($array_id,1));
  2.             $array_val = $array_id[0];
  3.            
  4.             $limit=0;
  5.             $buscar_archivos_conn=mysql_query("SELECT * FROM archivos WHERE owner IN ('".implode(", ", $array_id)."') ORDER BY ID DESC LIMIT ".$limit.",7")or die(mysql_error());
__________________
Shaito Hiraga - Diseñador CSS
  #4 (permalink)  
Antiguo 09/03/2012, 13:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Buscar array en sql

Lo que a mi me parece ver es un problema ocasionado al combinar PHP con MySQL. Puede que no se esté logrando una sintaxis correcta de la sentencia de SQL.
Si mal no recuerdo, impolde() se usa para transformar un array en una cadena de texto, de modo que cada valor esté separado del resto por un separador que se debe indicar (la coma en tu caso).
Pero cuando usas la sintaxis que pones, el resultado posiblemente sea algo como:
Código MySQL:
Ver original
  1. FROM archivos
  2. WHERE owner IN ('1, 3, 45, 78, 79, 80')
  3. LIMIT 10,7
Como se puede ver, el contenido de la conversión queda entre apótrofes, con lo que quedaría como un valor único en lugar de una serie de seis valores separados por comas. Eso es sencillamente porque los apóstrofos se usan en MySQL para encerrar cadenas de texto.
Lo que se debe ahcer es eliminar esos apóstrofos de modo que lo que quede sea:
Código MySQL:
Ver original
  1. FROM archivos
  2. WHERE owner IN (1, 3, 45, 78, 79, 80)
  3. LIMIT 10,7
Eso sí buscará un valor entre un conjunto de valores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sql
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 00:50.