2012-10-02 2 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

아주 나쁜 DB 디자인처럼 들립니다. – Havelock

+0

내가 어떻게 이런 일을하는지 다시 생각해보십시오. 감사! – Brandon

답변

3

는 질문에 따르면이 같은 것을 할 수 있어야한다 :

SELECT * FROM statistics WHERE datecolumn LIKE '%_sep_2012' 

그것이 좋다 말을하지를하지만 당신이 필요로하는 데이터를 얻을 수 있습니다.

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에 : 당신은 당신의 총처럼 얻을 카운트 또는 합계를 할 GROUP BY 절을 추가 할 수 있습니다

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'