2012-10-02 25 views
5

Me pregunto si hay una manera de seleccionar parte de una columna en mysql. Por ejemplo, quiero seleccionar todas las estadísticas de mi tabla que terminan en "_sep_2012". Esto me daría acceso a 1_sep_2012, 2_sep_2012, 3_sep_2012 etc ... ¿Hay alguna manera de hacer esto?Seleccionar título de columna parcial en MySQL

<?php 
$query=mysql_query("SELECT %_sep_2012% FROM statistics WHERE id = '$id'"); 

$array = mysql_fetch_row($query); 

$monthly_total = $array[0]; 

echo "$monthly_total"; 
?> 

Cualquier ayuda sería muy apreciada. ¡Gracias!

+3

usted tiene más de una columna que representa una fecha? – trickyzter

+3

Eso suena como un diseño DB muy malo. – Havelock

+0

Tal vez vuelva a pensar mal cómo lo estoy haciendo. ¡Gracias! – Brandon

Respuesta

3

De acuerdo a su pregunta debería ser posible hacer algo como:

SELECT * FROM statistics WHERE datecolumn LIKE '%_sep_2012' 

No diciendo que es agradable, pero debe obtener los datos que necesita. Se pueden añadir cláusulas GROUP BY para hacer un recuento o suma para obtener el total de su gusto:

SELECT datecolumn, SUM(amountcolumn) FROM statistics WHERE datecolumn LIKE '%_sep_2012' GROUP BY datecolumn 
+0

No hay 'datecolumn'. Las columnas Th se llaman así: '1_sep_2012' – hjpotter92

+0

Ahh se puso más feo de lo que esperaba. Entonces, la única opción sería generar una cadena con todos los campos. Pero en su lugar también podría obtener el registro total y luego hacer su cálculo en PHP. De todos modos, no será una buena solución que sea estructuralmente correcta. La buena solución sería agregar una tabla con una columna para la fecha y otra para el valor. –

+0

¿cuántos registros podría contener? La razón por la que lo hago es porque tengo que poder sumar el número total de visitas que reciben las distintas identificaciones de manera diaria a mensual, etc. Sé que si almaceno cada hit, mi DB lo hará. obtener bastante grande, así que tengo una tabla de valores INT que representan todos los días del año. – Brandon

0

escribir esto en PHP:

for($i=1;$i<32;$i++) 
    printf("`%d_sep_2012`, ", $i); 
+0

Gracias, voy a echar un vistazo a esto. ¿Es esta una mala forma de estructurar esta tabla? La razón por la que lo hago es porque tengo que poder sumar el número total de visitas que reciben las distintas identificaciones de manera diaria a mensual, etc. Sé que si almaceno cada hit, mi DB lo hará. obtener bastante grande, así que tengo una tabla de valores INT que representan todos los días del año ... – Brandon

+0

@Brandon Incluso si almacena la entrada diaria en una nueva fila, durante 10 años, todavía obtendrá no más de 3700 filas . – hjpotter92

0

Prueba este

SELECT * FROM statistics WHERE datecolumn LIKE '%_sep_2012' and id = '$id' 
Cuestiones relacionadas