2012-10-02 11 views
5

Ich frage mich, ob es eine Möglichkeit gibt, einen Teil einer Spalte in mysql auszuwählen. Zum Beispiel möchte ich alle Statistiken aus meiner Tabelle auswählen, die auf "_sep_2012" enden. Dies würde mir Zugriff auf 1_sep_2012, 2_sep_2012, 3_sep_2012 etc ... geben. Gibt es eine Möglichkeit, dies zu tun?Wählen Sie teilweise Spaltentitel in 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"; 
?> 

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

+3

Sie haben mehr als ein Spalte, die ein Datum darstellt? – trickyzter

+3

Das klingt nach einem sehr schlechten DB-Design. – Havelock

+0

Vielleicht krank, überdenken, wie ich das mache. Vielen Dank! – Brandon

Antwort

3

Nach Ihrer Frage sollte es möglich sein, wie etwas zu tun:

SELECT * FROM statistics WHERE datecolumn LIKE '%_sep_2012' 

Nicht sagen, es ist schön, aber es sollte die Daten, die Sie benötigen. Sie können GROUP BY-Klauseln hinzufügen, eine Zählung oder die Summe zu tun, um Ihre Gesamt zu erhalten wie:

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

Es gibt keine 'Datumsspalte'. Th Spalten selbst sind benannt als: '1_sep_2012' – hjpotter92

+0

Ahh es wurde hässlicher als ich erwartet hatte. Dann wäre nur Option, eine Zeichenfolge mit allen Feldern zu generieren. Stattdessen können Sie auch den Gesamtdatensatz abrufen und dann Ihre Berechnung in PHP durchführen. Es wird sowieso keine schöne Lösung sein, die strukturell korrekt ist. Die gute Lösung würde wahrscheinlich eine Tabelle mit einer Spalte für das Datum und eine für den Wert hinzufügen. –

+0

Wie viele Datensätze könnte das halten? Der Grund, warum ich es mache, ist, weil ich in der Lage sein muss, die Gesamtzahl der Zugriffe auf die verschiedenen ID's auf täglicher oder monatlicher Basis zusammenzufassen, usw. Ich weiß, wenn ich jeden einzelnen Treffer speichere, wird meine DB werden ziemlich groß, also habe ich eine Tabelle von INT-Werten, die jeden Tag des Jahres darstellen. – Brandon

0

schreiben in dieser PHP:

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

Danke, ich werde mir das ansehen. Ist das eine schlechte Methode, diesen Tisch zu strukturieren? Der Grund, warum ich es mache, ist, weil ich in der Lage sein muss, die Gesamtzahl der Zugriffe auf die verschiedenen ID's auf täglicher oder monatlicher Basis zusammenzufassen, usw. Ich weiß, wenn ich jeden einzelnen Treffer speichere, wird meine DB werden ziemlich groß, also habe ich eine Tabelle von INT-Werten, die jeden Tag des Jahres darstellen ... – Brandon

+0

@Brandon Selbst wenn Sie den täglichen Eintrag in einer neuen Zeile für 10 Jahre speichern, wird es immer noch nicht mehr als 3700 Zeilen bekommen . – hjpotter92

0

Versuchen Sie, diese

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