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

Pasar varios valores a un WHERE

Estas en el tema de Pasar varios valores a un WHERE en el foro de Bases de Datos General en Foros del Web. Buenas a todos, Me gustaria saber como se puede hacer que en una consulta con WHERE, el valor pase desde una variable, conteniendo varios valores. ...
  #1 (permalink)  
Antiguo 11/05/2010, 13:33
 
Fecha de Ingreso: agosto-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
Pasar varios valores a un WHERE

Buenas a todos,

Me gustaria saber como se puede hacer que en una consulta con WHERE, el valor pase desde una variable, conteniendo varios valores.

------------------

Un ejemplo sencillo seria este:

$seleccion = Audi, BMW, Porsche;

"SELECT * FROM coches WHERE coches.marca = $seleccion "

---------------

Asi cogeria todos los registros que fuesen de cualquiera de esas 3 marcas.

Pero claro, escribiendo asi la sentencia, no la coge.


¿Alguien sabe si esto es posible?


Muchas gracias a todos.
  #2 (permalink)  
Antiguo 11/05/2010, 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: Pasar varios valores a un WHERE

La variable debe contener los valores separados por comas y cada valor encerrado entre apóstrofos ('), de modo que al crear la sentencia quede así:
Código MySQL:
Ver original
  1. FROM coches
  2. WHERE marca IN ('Audi', 'BMW', 'Porsche');
__________________
¿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 11/05/2010, 13:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Pasar varios valores a un WHERE

Código PHP:
Ver original
  1. $seleccion = "'Audi', 'BMW', 'Porsche'";
  2.  
  3. "SELECT * FROM coches WHERE coches.marca in($seleccion)"

así?

de igual forma, esto es un problema de php.

Por el lado de bases de datos, te digo que lo puedes hacer con la clausula IN.

EDITO: Se me adelantó gnzsoloyo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 11/05/2010, 13:45
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: Pasar varios valores a un WHERE



Siempre nos andamos pisando los talones, huesos52...

Saludos.

__________________
¿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 11/05/2010, 14:10
 
Fecha de Ingreso: agosto-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Pasar varios valores a un WHERE

Si,como dice gnzsoloyo sale perfecto, el problema viene con la variable.
He probado como me has dicho,Huesos52 pero sigue sin cogermelo.(Lo estoy programando con Dreamweaver , por si sirve de algo decirlo)


Yo creo que es un tema de comillas,porque si pongo:

"SELECT * FROM coches WHERE coches.color IN ('%s')"

Y paso un valor como variable (por ejemplo pongo azul) si que lo interpreta todo bien


Pero si pongo:
"SELECT * FROM coches WHERE coches.color IN (%s)"

Y paso las variables como 'azul','rojo' ya se lia.


Vosotros soleis programar con DW? o lo haceis de forma manual?

Un saludo y gracias a los dos por vuestra ayuda.
  #6 (permalink)  
Antiguo 11/05/2010, 14:11
 
Fecha de Ingreso: agosto-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Pasar varios valores a un WHERE

Este es el codigo (hasta donde he llegado):

Código PHP:
<?php require_once('Connections/buscador.php'); ?>
<?php
$colname_Recordset1 
"-1";
if (isset(
$_GET['seleccion'])) {
  
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['seleccion'] : addslashes($_GET['seleccion']);
}
mysql_select_db($database_buscador$buscador);
$query_Recordset1 sprintf("SELECT * FROM coches WHERE coches.color IN (%s)"$colname_Recordset1);
$Recordset1 mysql_query($query_Recordset1$buscador) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>

Etiquetas: pasar
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 04:58.