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

Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienzen por X)

Estas en el tema de Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienzen por X) en el foro de Mysql en Foros del Web. Hola amigos estoy trabajando en un sistema de puntos con php y para ello necesito contar los registros de un campo donde otro camo comienza ...
  #1 (permalink)  
Antiguo 05/07/2010, 07:37
 
Fecha de Ingreso: diciembre-2008
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 1
Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienzen por X)

Hola amigos estoy trabajando en un sistema de puntos con php y para ello necesito contar los registros de un campo donde otro camo comienza por x, em este caso una fecha
Para contar registros sinmás utilizo este codigo que funciona a la perfeccion,
Cita:
//selección de la base de datos con la que vamos a trabajar
$resc = mysql_query('SELECT SUM(CAMPO_X) as total_suma FROM TABLA_x'');
$resultado= mysql_result($resc,0);
sin embargo cuando quise condicionar la suma con el clasico % o _ me dio el error

Cita:


//selección de la base de datos con la que vamos a trabajar -- esto no va (poner en foro)
$restc = mysql_query("SELECT SUM(campoX) as total_suma FROM tablaX where CampoY like = 2010-07-04%");
$totalpoints= mysql_result($restc,0);

y he aquí el error:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/ss2bssf7/public_html/aa/araslf/cstats/index.php on line 44

y la line 44 es la siguiente

Cita:
$totalpoints= mysql_result($restc,0);

Como puedo hacerlo?
Gracias gente!!
  #2 (permalink)  
Antiguo 05/07/2010, 10:48
 
Fecha de Ingreso: septiembre-2009
Mensajes: 67
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Si tenes esto
where CampoY like = 2010-07-04%

Hay que sacar el =, like va sin igual, le decis "que se parezca a" no que sea "igual a".

Saludos.
  #3 (permalink)  
Antiguo 05/07/2010, 11:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

mysql_query("SELECT SUM(campoX) as total_suma FROM tablaX where CampoY = '2010-07-04'")
Si CampoY es un campo de tipo date, debes usar esa sintaxis. No sé por qué quieres usar %, puesto que estás dando el campo completo. En caso de ser un campo de tipo DATETIME. Sospecho que es ese tu problema, te bastará con esto
mysql_query("SELECT SUM(campoX) as total_suma FROM tablaX where DATE(CampoY) = '2010-07-04'")
Así sólo comparará día, mes y año, y no hora, minuto y segundo.
  #4 (permalink)  
Antiguo 06/07/2010, 08:54
 
Fecha de Ingreso: diciembre-2008
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz


Warning: mysql_result(): supplied argument is not a valid MySQL result resource


Hola amigos, probe con ambas propuestas , y lamentablemente ninguna funciono el error esta en

Cita:
$totapoints = mysql_result($restc,0);
bueno seguire intentandolo, gracias muchachos!!
  #5 (permalink)  
Antiguo 06/07/2010, 09:03
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: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

¿Qué tipo de campo es exactamente CampoY en la tabla?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 06/07/2010, 09:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Hola gnzsoloyo!!!
el campoY es un DATETIME, el objetivo es sumar los registros insertados en el rango temporal de un dia.
Para contar el TOTAL de registros de un campo en una tabla utilizo este codigo QUE FUNCIONA A LA PERFECCION

Cita:
$resv = mysql_query('SELECT SUM(campoZ) as total_suma FROM tabla_en_cuestion');
$totalviews = mysql_result($resv,0);

Última edición por mesenier; 06/07/2010 a las 09:27 Razón: temporal m antes de b y p
  #7 (permalink)  
Antiguo 06/07/2010, 09:49
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: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Pues en ese caso la solución que Jurena te propone debería funcionar sin inconvenientes:
Código MySQL:
Ver original
  1. SELECT SUM(campoX) as total_suma
  2. FROM tablaX
  3. WHERE DATE(CampoY) = '2010-07-04'
Mi duda es si el problema no estará produciéndose a nivel de PHP...

¿Has probado escribirlo así:

//selección de la base de datos con la que vamos a trabajar -- esto no va (poner en foro)
Código PHP:
Ver original
  1. $sql="SELECT SUM(campoX) as total_suma FROM tablaX WHERE DATE(CampoY) = '2010-07-04'";
  2. $result = mysql_query($sql);
  3. if (!$result) {
  4.     die('Error en MySQL: ' . mysql_error());
  5. }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/07/2010, 08:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Hola amigos agradezco vuestra ayuda mas lamentablemente no conseguí resolverlo, he aqui el error

Cita:
Error en 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 'tabla WHERE(campoY) 2010-07-04%' at line 1
¿alguna sugerencia?
  #9 (permalink)  
Antiguo 07/07/2010, 09:15
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: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Si: Copia la sentencia tal y como te la puse. Lo que estás usando no es:
Código MySQL:
Ver original
  1. SELECT SUM(campoX) as total_suma FROM tablaX WHERE DATE(CampoY) = '2010-07-04'
sino
Cita:
SELECT SUM(campoX) as total_suma FROM tablaX WHERE(CampoY) = 2010-07-04%
Fíjate que:
1) No tiene el operador lógico "=".
2) Está presente un signo "%" que no tiene nada que haer allí.
3) El campo (campoY) no tiene aplicada la función DATE().
4) La fecha no está encerrada entre apóstrofos ('), como para que la interprete como una fecha.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 07/07/2010, 15:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

hola amigos lamento repetirme una vez mas pero ninguno de los codigos de este post funciona, bueno el ultimo codigo funciona si el campo es EXACTAMENTE igual, la fecha y la hora

gracias de todos modos
  #11 (permalink)  
Antiguo 07/07/2010, 15:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Prueba esto:
SELECT SUM(campoX) as total_suma FROM tablaX WHERE (YEAR(CampoY) = 2010 AND MONTH(CampoY)= 7 AND DAY(CampoY)=4)
  #12 (permalink)  
Antiguo 07/07/2010, 19:16
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: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Cita:
hola amigos lamento repetirme una vez mas pero ninguno de los codigos de este post funciona, bueno el ultimo codigo funciona si el campo es EXACTAMENTE igual, la fecha y la hora
Bueno, eso era precisamente lo que esa sentencia se suponía que debía hacer. Y si lo hizo, entonces está correcta.
Pero me parece que tu problema tiene que ver algo con la lógica de datos.
Si regresamos a tu primer post, dices en un momento:
Cita:
sin embargo cuando quise condicionar la suma con el clasico % o _ me dio el error
Si entiendo bien, lo que quieres es buscar fechas "parecidas a...", porque ese es el sentido de lo que habías intentado. El problema es que no existe algo que podamos denominar "fecha parecida a otra". La fecha no es un objeto de una clase abstracta, es un valor discreto, y como valor discreto solo tiene sentido compararlo con =, >, <, >= y <=. No existe algo que podamos llamar "día parecido a", como tampoco hay algo como "número parecido a".

Cuando tratas con valores de fecha lo que tiene sentido es buscar fechas próximas a X, o bien fechas comprendidas en un rango... ¿Se entiende?

Puedes elegir si quieres las de una X semana del año, el mes, el cuatrimestre, etc. Pero serán siempre rangos fijos de fechas. De hecho, en tu ejemplo original, lo que hubiese correspondido sería:
Código MySQL:
Ver original
  1. SELECT SUM(campoX) as total_suma
  2. FROM tablaX
  3. WHERE CampoY  BETWEEN '2010-07-04 00:00:00' AND '2010-07-04 23:59:59'
O, si hubieses querido un rango de días determinado:
Código MySQL:
Ver original
  1. SELECT SUM(campoX) as total_suma
  2. FROM tablaX
  3. WHERE DATE(CampoY ) BETWEEN '2010-07-01' AND '2010-07-14'

En tu caso lo que debes buscar es fechas que pertenezcan al mismo año, al mismo mes, al año y mes, a la semana, a la quincena, etc., pero debes definir un rango buscado. Eso sí tiene sentido, lo otro no.
Así que la pregunta, volviendo al principio sería: Tomando como base una fecha X, ¿cuál es el rango de días o la comparación cuyo resultado quieres obtener?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/07/2010 a las 19:30
  #13 (permalink)  
Antiguo 08/07/2010, 06:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Como puedo contar registros utilizando WHERE Y LIKE (todos los que comienz

Excelente amigos este ultimo ejemplo soluciono el tema dandole fin al post , mil graciassss

Etiquetas: contar, registros, sum
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:26.