2012-10-02 51 views
5

我想知道是否有辦法在mysql中選擇部分列。例如,我想從我的表中選擇以「_sep_2012」結尾的所有統計信息。這將讓我訪問1_sep_2012,2_sep_2012,3_sep_2012等...有沒有辦法做到這一點?在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"; 
?> 

任何援助將不勝感激。謝謝!

+3

你有一個以上的代表日期的列? – trickyzter

+3

這聽起來像是一個非常糟糕的數據庫設計。 – Havelock

+0

也許我不會重新思考我是如何做到這一點的。謝謝! – Brandon

回答

3

根據你的問題應該可以做這樣的事情:

SELECT * FROM statistics WHERE datecolumn LIKE '%_sep_2012' 

不是說這是不錯的,但它應該得到你所需要的數據。您可以添加GROUP BY子句做了數或金額,讓您總像:

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

沒有'datecolumn'。 Th列自己被命名爲:'1_sep_2012' – hjpotter92

+0

啊,它變得更難看了,然後我預期。那麼只有選項會生成一個包含所有字段的字符串。但是,您也可以只獲取全部記錄,然後使用PHP進行計算。無論如何,這不會是一個很好的解決方案,這在結構上是正確的。好的解決方案可能是添加一個表格,其中包含日期的列和值。 –

+0

有多少記錄可以保存?我這樣做的原因是因爲我需要能夠將每個ID的每日到每月的點擊總數加起來......我知道如果我存儲每一個命中,我的DB將會得到相當大的,所以我有一個INT值的表格,代表一年中的每一天.. – Brandon

0

寫在PHP中:

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

謝謝,我會看看這個。這是構建這張桌子的壞方法嗎?我這樣做的原因是因爲我需要能夠將每個ID的每日到每月的點擊總數加起來......我知道如果我存儲每一個命中,我的DB將會因此我有一張INT值的表格,代表每年的每一天... – Brandon

+0

@Brandon即使您將日常條目存儲在新行中,10年後,仍然會得到不超過3700行。 – hjpotter92

0

試試這個

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