Foros del Web » Programando para Internet » PHP »

duda con SELECT

Estas en el tema de duda con SELECT en el foro de PHP en Foros del Web. Hola que tal. Tengo una tabla con una serie de campos. Uno de ellos es un campo de tipo SET, que recibe unos valores de ...
  #1 (permalink)  
Antiguo 07/09/2005, 05:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 12 años, 4 meses
Puntos: 0
duda con SELECT

Hola que tal.


Tengo una tabla con una serie de campos. Uno de ellos es un campo de tipo SET, que recibe unos valores de un select multiple.

Supongamos que el campo SET tiene los valores 1,4.

La duda es como hacer una sentencia SELECT para q me muestre todos los campos de la tabla en los que el campo set tenga el valor 4.

Lo tengo hecho de la siguiente forma pero no me funciona:

Código PHP:
$id=$_GET['id'];  //Esto seria el nombre del campo SET
$cat=$_GET['cat']; //Esto seria el numero de la categoria, en el ejemplo el 4.

//$result deberia de tener todos los campos de Noticias donde El campo $id fuera igual a $cat

$result=mysql_query("Select * From Noticias Where SET('$id') Values('$cat') Order By Num Desc Limit 12 ",$link); 
  #2 (permalink)  
Antiguo 07/09/2005, 05:38
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Solo es una duda, pero no te funciona poniendo simplemente un id =$cat?
$result=mysql_query("Select * From Noticias Where $id =$cat Order By Num Desc Limit 12 ",$link);
  #3 (permalink)  
Antiguo 07/09/2005, 06:12
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 12 años, 4 meses
Puntos: 0
nada flopi, asi es como lo hice la primera vez y tampoco :S La verdad es q es la primera vez q utilizo el campo SET y no tengo ni idea

Gracias
  #4 (permalink)  
Antiguo 07/09/2005, 07:20
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Pues lo acabo de probar y si me funciona.
La tabla que he usado es:
DROP TABLE IF EXISTS set_test;
CREATE TABLE `set_test` (
`rowid` int(10) unsigned NOT NULL auto_increment,
`myset` set('Uno','Dos','Masdedos','unhuevo') default NULL,
PRIMARY KEY (`rowid`)
) TYPE=MyISAM;

Los datos con los que la he rellenado son:
INSERT INTO set_test (rowid, myset) VALUES("1", "Uno");
INSERT INTO set_test (rowid, myset) VALUES("2", "Dos");
INSERT INTO set_test (rowid, myset) VALUES("3", "MasdeDos");

y la consulta que he realizado:
Select * From set_test
Where myset = 'Dos'
Order By rowid Desc Limit 12.

Como ves, he puesto simplemente un = en el where.
Si pruebas esto y te da error, manda el mensaje de error para ver si puedo echarte un cable.
  #5 (permalink)  
Antiguo 07/09/2005, 09:00
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 12 años, 4 meses
Puntos: 0
Flopi gracias x el interes, te comento:

mi tabla noticias tiene una serie de campos, Num, Titular, CatReg...
Pues bien, CatReg es un campo de tipo SET, y en ese campo hay 1,4,6,7, o los valores q sean.
Lo que kiero es q si busco un 4 en CatReg me muestre el titular

Con esa misma tabla q tienes prueba a hacer lo siguiente:

INSERT INTO set_test (rowid, myset) VALUES("1", "Uno,Dos,MasdeDos");

y haz esta consulta:

Select * From set_test
Where myset = 'Dos'
Order By rowid Desc Limit 12.

Veras que no te muestra ningun resultado.
A mi no me da error, simplemente no me muestra nada.

Gracias x ayudar :D
  #6 (permalink)  
Antiguo 07/09/2005, 09:10
 
Fecha de Ingreso: septiembre-2005
Ubicación: Bs as, capital
Mensajes: 77
Antigüedad: 12 años, 3 meses
Puntos: 0
Para que al hacer esa consulta te devuelva lo que vos tenes esperado haces el siguiente codigo:

Select * From set_test
Where myset LIKE '%Dos%'
Order By rowid Desc Limit 12.

El " LIKE '%Dos%' " va a buscar dentro del campo myset todos aquellos registros que en cualquier parte de ese campo este la palabra 'Dos'
__________________
Soy MC VENOM, 100% rapero!!!
  #7 (permalink)  
Antiguo 07/09/2005, 09:23
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 12 años, 4 meses
Puntos: 0
Perfecto venom!!!

eso era lo q estaba buscando, muchas gracias a los dos por el interes :D

Hasta otra!
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 15:16.