테스트 사이트 - 개발 중인 베타 버전입니다

DB count 특정 값을 갖는 항목 갯수 합 구하기 질문드립니다. 채택완료

포스티잇 2년 전 조회 1,945

안녕하세요.

고수님들께 질의를 드리고 배움을 얻고자 질의드립니다.

 

질의 : 특정 항목을 컬럼 값으로 갖고 있는 DB 항목의 합을 구하고 싶습니다.

         php 내에서 사용 예정입니다. DB는 아래와 같이 연결 되어 있습니다.

 

+ -------- + ------ + ----------- +

┃       테이블명 : SPORT        ┃

+ -------- + ------ + ----------- +

기타1기타2특정항목 ┃

+ -------- + ------ + ----------- +

┃  abc1  ┃  abc2 ┃    축구   ┃

┃  abc3  ┃  abc4 ┃    축구   ┃

┃  abc5  ┃  abc6 ┃    농구   ┃

┃  abc7  ┃  abc8 ┃    야구   ┃

┃  abc9  ┃  abc0 ┃    농구   ┃

+ -------- + ------ + ----------- +

 

이때 축구를 갖는 항목 개수의 합을 '2' 로 얻고자 하고,

아래처럼 항목을 기입하여 항목 개수의 합을 얻을수 있게 하고 싶습니다.

 

 

변수['축구'] = 2

변수['농구'] = 2

변수['야구'] = 1

 

 

고수님들의 조언 여쭙습니다.

감사드립니다 고수님들.

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
플래토
2년 전

</p>

<p><?php </p>

<p>$sql = "select 특정항목, count(*) cnt  from SPORT </p>

<p>           group by 특정항목";</p>

<p>$result = mysqli_query($sql);</p>

<p>while ($row = mysqli_fetch_array($result)) {</p>

<p>    echo $row['특정항목']." : ".$row['cnt']."
";</p>

<p>}</p>

<p> </p>

<p> </p>

<p>

로 하시면됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 8개

포스티잇
2년 전
정말 감사드립니다.

이후 ..
변수['축구'] <-- 이렇게 기입하여, 2의 결과를 얻고자 한다면

$row['축구'] 이렇게 기입하면 값을 얻을수 있는것인가요 ?
플래토
2년 전
화면출력에 변수['축구']' 라고 표기하고 싶으신거라면
[code]
echo "변수[".$row['특정항목']."] : ".row['cnt']."<br>";
[/code]
형태로 사용하시면 되지 않을까 싶네요
포스티잇
2년 전
제가 드린 질의가 잘못되었습니다. 죄송합니다.
저는

<?php echo $row['축구'] ?> 이렇게 하였을 때 '2' 가 나오는지를 질의드렸습니다.

죄송합니다.
플래토
2년 전
아니요 특정항목은 그룹핑된 컬럼값 : 축구 가 나오게 되고
row['cnt']는 그 그루핑된 값으로 카운트된 숫자의 합이 나옵니다.
포스티잇
2년 전
많이 알지 못하여 질문 드리는 것도 죄송하네요 ...
원하는 항목을 포함하는 값의 합을 구하는 형태로 사용하고 싶은데요.

<?php echo $row['축구'] ?> 이렇게 찍었을 때 (축구 항목을 갖는 합) 2,
<?php echo $row['농구'] ?> 이렇게 찍었을 때 (농구 항목을 갖는 합) 2,

등등.. 이렇게 나오게 하려면 어떻게 하면 좋을지 질문드립니다 ..
엑스엠엘
2년 전
<?php
$sql = "select 특정항목, count(*) cnt from SPORT
group by 특정항목";
$result = mysqli_query($sql);

$cnt_by= array()

while ($row = mysqli_fetch_array($result)) {
$cnt_by[ $row['특정항목'] ]= $row['cnt'];
}

echo $cnt_by["축구"];
해 보세요.
플래토
2년 전
@포스티잇
위에 @엑스엠엘 님꼐서 좋은 예로 만들어주셨네요
포스티잇
2년 전
서버가 다운되어 감사 인사가 많이 늦었습니다.
정말 감사합니다 센세!

댓글을 작성하려면 로그인이 필요합니다.

갯수가 필요하시면

count(*)

합이 필요하시면

sum( 해당 컬럼)

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

포스티잇
1년 전
감사합니다! 잘 활용하겠습니다!

댓글을 작성하려면 로그인이 필요합니다.

그누위즈

</p>

<p><?php

$conn = mysqli_connect("host", "user", "password", "database");</p>

<p>$result = mysqli_query($conn, "SELECT COUNT(*) FROM SPORT WHERE 특정항목 = '축구'");

$row = mysqli_fetch_assoc($result);

$sum_soccer = $row["COUNT(*)"];</p>

<p>$result = mysqli_query($conn, "SELECT COUNT(*) FROM SPORT WHERE 특정항목 = '농구'");

$row = mysqli_fetch_assoc($result);

$sum_basketball = $row["COUNT(*)"];</p>

<p>$result = mysqli_query($conn, "SELECT COUNT(*) FROM SPORT WHERE 특정항목 = '야구'");

$row = mysqli_fetch_assoc($result);

$sum_baseball = $row["COUNT(*)"];</p>

<p>$data = array(

    "축구" => $sum_soccer,

    "농구" => $sum_basketball,

    "야구" => $sum_baseball

);</p>

<p>print_r($data);

mysqli_close($conn);</p>

<p> </p>

<p>// 결과</p>

<p>// Array ( [축구] => 2 [농구] => 2 [야구] => 1 )

?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

포스티잇
2년 전
정말 감사합니다 많이 배웠습니다. 멋진 소스입니다!

댓글을 작성하려면 로그인이 필요합니다.

2년 전

</p>

<p><?php</p>

<p>$tbl = [

    ['기타1' => 'abc1', '기타2' => 'abc2', '특정항목' => '축구'],

    ['기타1' => 'abc3', '기타2' => 'abc4', '특정항목' => '축구'],

    ['기타1' => 'abc5', '기타2' => 'abc6', '특정항목' => '농구'],

    ['기타1' => 'abc7', '기타2' => 'abc8', '특정항목' => '야구'],

    ['기타1' => 'abc9', '기타2' => 'abc0', '특정항목' => '농구']

];</p>

<p> </p>

<p>$grp = [];

foreach ($tbl as $row) { // while ($row = sql_fetch_array($result)) { ...

    $grp_k = $row['특정항목'];

    if (isset($grp[$grp_k]) != true) {

        $grp[$grp_k] = 0;

    }

    $grp[$grp_k]++;

}</p>

<p> </p>

<p>print('<pre>');</p>

<p>print_r($grp);</p>

<p>print('</pre>');</p>

<p>?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

포스티잇
2년 전
정말 감사드립니다. 너무많은 도움이 되었습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인