Foros del Web » Programando para Internet » PHP »

distinc con like

Estas en el tema de distinc con like en el foro de PHP en Foros del Web. hola amigos tengo este query pero no me funciona me muestra todos los registros coincidentes pero repetidos y le puse el distinc para que no ...
  #1 (permalink)  
Antiguo 08/11/2006, 11:15
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
distinc con like

hola amigos tengo este query pero no me funciona me muestra todos los registros coincidentes pero repetidos y le puse el distinc para que no me muestre los repetidos

es correcto la sentencia??

$res = mysql_query("select distinct ID_FOTO,EVENT_FOTO from atributos_imagenes where EVENT_FOTO like '".$letters."%'") or die(mysql_error());


espero sus comentarios
gracias

saludos
__________________
gerardo
  #2 (permalink)  
Antiguo 08/11/2006, 11:26
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola! la sentencia es correcta. almenos en la estrucutra si!
cuando imprimes los resultados te has fijado si el id es el mismo?
supongo q ID_FOTO es una clave primaria y q no esta repetida, en cambio EVENT_FOTO puede ser un campo de texto donde contengas cosas repetidas!
ejemplo
ID_FOTO - EVENT_FOTO
1 | imagen dañada
2 | imagen ampliada
3 | imagen dañada

aqui con tu consulta mostraria todos los valores xq el ID_FOTO son todos diferentes!

si este no es tu caso y tanto el id como el event te salen repetidos, podrias añadir al final de tu consulta un GROUP BY.

EDITADO: cual es el fin de esa consulta?

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #3 (permalink)  
Antiguo 08/11/2006, 11:36
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
mira me sale esto

de hecho me los muestra con sus respectivas
clave

asi
1###comida|2###comida|535###cumple|

pero deberia ponerme solo en este caso una vez comida

espero tus comentarios
y gracias por responder

este el codigo completo
$letters = 'c';//aqui pongo lo que se va a buscar
$letters = preg_replace("/[^a-z0-9 ]/si","",$letters);
//$res = mysql_query("select ID,countryName from ajax_countries where countryName like '".$letters."%'") or die(mysql_error());
$res = mysql_query("select distinct ID_FOTO,EVENT_FOTO from atributos_imagenes where EVENT_FOTO like '".$letters."%'") or die(mysql_error());
#echo "1###select ID,countryName from ajax_countries where countryName like '".$letters."%'|";
while($inf = mysql_fetch_array($res))
{
echo $inf["ID_FOTO"]."###".$inf["EVENT_FOTO"]."|";
}


Cita:
Iniciado por sergi_climent Ver Mensaje
Hola! la sentencia es correcta. almenos en la estrucutra si!
cuando imprimes los resultados te has fijado si el id es el mismo?
supongo q ID_FOTO es una clave primaria y q no esta repetida, en cambio EVENT_FOTO puede ser un campo de texto donde contengas cosas repetidas!
ejemplo
ID_FOTO - EVENT_FOTO
1 | imagen dañada
2 | imagen ampliada
3 | imagen dañada

aqui con tu consulta mostraria todos los valores xq el ID_FOTO son todos diferentes!

si este no es tu caso y tanto el id como el event te salen repetidos, podrias añadir al final de tu consulta un GROUP BY.

EDITADO: cual es el fin de esa consulta?

Saludos
__________________
gerardo
  #4 (permalink)  
Antiguo 08/11/2006, 11:39
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola! te mostraria solo comida si tu sentencia fuera:
Código PHP:
$sql=mysql_query("select distinct EVENT_FOTO 
from atributos_imagenes where EVENT_FOTO like '"
.$letters."%'"
or die(
mysql_error()); 
pero como tambien le pides el codigo, el codigo ya es diferente!
1###comida|2###comida|535###cumple|

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #5 (permalink)  
Antiguo 08/11/2006, 11:47
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
ya salio

ya quedo sergi_climent gracias amigo ahora veo cual era el problema

gracias
saludos

Cita:
Iniciado por sergi_climent Ver Mensaje
Hola! te mostraria solo comida si tu sentencia fuera:
Código PHP:
$sql=mysql_query("select distinct EVENT_FOTO 
from atributos_imagenes where EVENT_FOTO like '"
.$letters."%'"
or die(
mysql_error()); 
pero como tambien le pides el codigo, el codigo ya es diferente!
1###comida|2###comida|535###cumple|

saludos
__________________
gerardo
  #6 (permalink)  
Antiguo 08/11/2006, 11:52
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Pues no estoy muy seguro, pero creo que DISTINCT devería estar en EVENT_FOTO de esta forma:
Código PHP:
$res mysql_query"SELECT ID_FOTO, DISTINCT EVENT_FOTO FROM atributos_imagenes WHERE EVENT_FOTO LIKE '".$letters."%'") or die( mysql_error() ); 
Espero te haya funcionado. Suerte
Ups demasiado tarde
  #7 (permalink)  
Antiguo 08/11/2006, 11:57
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
hola Erikfrancisco solo para ver si realmente funciona
me sale error me dice que consulte el manual de mysql

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT EVENT_FOTO FROM atributos_imagenes WHERE EVENT_FOTO LIKE 'c%'' at line 1

espero tus comentarios
saludos
y gracias por responder

Cita:
Iniciado por Erikfrancisco Ver Mensaje
Pues no estoy muy seguro, pero creo que DISTINCT devería estar en EVENT_FOTO de esta forma:
Código PHP:
$res mysql_query"SELECT ID_FOTO, DISTINCT EVENT_FOTO FROM atributos_imagenes WHERE EVENT_FOTO LIKE '".$letters."%'") or die( mysql_error() ); 
Espero te haya funcionado. Suerte
Ups demasiado tarde
__________________
gerardo
  #8 (permalink)  
Antiguo 08/11/2006, 12:55
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Disculpa, el error que te sale fue porque se me olvido que DISTINCT es lo primero que debes de poner, intenta de esta forma:
Código PHP:
$res mysql_query"SELECT DISTINCT EVENT_FOTO, ID_FOTO FROM atributos_imagenes WHERE EVENT_FOTO LIKE '".$letters."%'") or die( mysql_error() ); 
Suerte
  #9 (permalink)  
Antiguo 09/11/2006, 09:40
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
hola men fijate que ya funcionan pero quedo como yo lo habia indicado
y me sigue mandando todos los datos la solucion es yo creo quitar el campo ID_FOTO como lo indico el amigo sergi_climent

1###comida|2###comida|535###cumple|

saludos
__________________
gerardo
  #10 (permalink)  
Antiguo 09/11/2006, 13:17
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por chalchis Ver Mensaje
la solucion es yo creo quitar el campo ID_FOTO como lo indico el amigo sergi_climent
No necesariamente, lo que sucede es que faltó agrupar por EVENT_FOTO, mira prueva con esta consulta:
Código PHP:
$res mysql_query"SELECT ID_FOTO, EVENT_FOTO FROM atributos_imagenes GROUP BY EVENT_FOTO HAVING EVENT_FOTO LIKE '".$letters."%'" ) or die( mysql_error() ); 
En teoría debería funcionar. Hay luego me cuentas que tal te fue. Suerte
  #11 (permalink)  
Antiguo 09/11/2006, 13:39
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
De acuerdo

hola Erikfrancisco ya lo probe y si funciona
orale que padre

gracias men

saludos

Cita:
Iniciado por Erikfrancisco Ver Mensaje
No necesariamente, lo que sucede es que faltó agrupar por EVENT_FOTO, mira prueva con esta consulta:
Código PHP:
$res mysql_query"SELECT ID_FOTO, EVENT_FOTO FROM atributos_imagenes GROUP BY EVENT_FOTO HAVING EVENT_FOTO LIKE '".$letters."%'" ) or die( mysql_error() ); 
En teoría debería funcionar. Hay luego me cuentas que tal te fue. Suerte
__________________
gerardo
  #12 (permalink)  
Antiguo 10/11/2006, 01:57
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola! me alegro por la solucion encontrada!

si pones eso si tienes 1###comida|2###comida te cojera uno de los dos por lo tanto un id de esos dos no te saldra!
entonces la duda q me queda es: para q quieres el id_foto?

si estoy equivocado corregidme...

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #13 (permalink)  
Antiguo 10/11/2006, 08:43
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por sergi_climent Ver Mensaje
entonces la duda q me queda es: para q quieres el id_foto?
Pues me imagino que la duda no era tanto el hecho de querer obtener el id sino querer obtener más de un campo. Bueno, es lo que yo me imágino, de no ser así, pues que mejor utilice distinct con un sólo campo, mejor esperemos la respuesta de chalchis.
Saludos.
  #14 (permalink)  
Antiguo 13/11/2006, 12:29
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
gracias por reponder a todos amigos
saludos

Cita:
Iniciado por Erikfrancisco Ver Mensaje
Pues me imagino que la duda no era tanto el hecho de querer obtener el id sino querer obtener más de un campo. Bueno, es lo que yo me imágino, de no ser así, pues que mejor utilice distinct con un sólo campo, mejor esperemos la respuesta de chalchis.
Saludos.
__________________
gerardo
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 07:39.