DB count 특정 값을 갖는 항목 갯수 합 구하기 질문드립니다. 채택완료
안녕하세요.
고수님들께 질의를 드리고 배움을 얻고자 질의드립니다.
질의 : 특정 항목을 컬럼 값으로 갖고 있는 DB 항목의 합을 구하고 싶습니다.
php 내에서 사용 예정입니다. DB는 아래와 같이 연결 되어 있습니다.
+ -------- + ------ + ----------- +
┃ 테이블명 : SPORT ┃
+ -------- + ------ + ----------- +
┃ 기타1 ┃ 기타2 ┃ 특정항목 ┃
+ -------- + ------ + ----------- +
┃ abc1 ┃ abc2 ┃ 축구 ┃
┃ abc3 ┃ abc4 ┃ 축구 ┃
┃ abc5 ┃ abc6 ┃ 농구 ┃
┃ abc7 ┃ abc8 ┃ 야구 ┃
┃ abc9 ┃ abc0 ┃ 농구 ┃
+ -------- + ------ + ----------- +
이때 축구를 갖는 항목 개수의 합을 '2' 로 얻고자 하고,
아래처럼 항목을 기입하여 항목 개수의 합을 얻을수 있게 하고 싶습니다.
변수['축구'] = 2
변수['농구'] = 2
변수['야구'] = 1
고수님들의 조언 여쭙습니다.
감사드립니다 고수님들.
답변 4개
</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개
[code]
echo "변수[".$row['특정항목']."] : ".row['cnt']."<br>";
[/code]
형태로 사용하시면 되지 않을까 싶네요
저는
<?php echo $row['축구'] ?> 이렇게 하였을 때 '2' 가 나오는지를 질의드렸습니다.
죄송합니다.
row['cnt']는 그 그루핑된 값으로 카운트된 숫자의 합이 나옵니다.
원하는 항목을 포함하는 값의 합을 구하는 형태로 사용하고 싶은데요.
<?php echo $row['축구'] ?> 이렇게 찍었을 때 (축구 항목을 갖는 합) 2,
<?php echo $row['농구'] ?> 이렇게 찍었을 때 (농구 항목을 갖는 합) 2,
등등.. 이렇게 나오게 하려면 어떻게 하면 좋을지 질문드립니다 ..
$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["축구"];
해 보세요.
위에 @엑스엠엘 님꼐서 좋은 예로 만들어주셨네요
정말 감사합니다 센세!
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 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개
댓글을 작성하려면 로그인이 필요합니다.
</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의 결과를 얻고자 한다면
$row['축구'] 이렇게 기입하면 값을 얻을수 있는것인가요 ?