sql 중복 합치고 카운트 많은순으로 출력 문의
본문
g5_table_aaa 테이블에 aaa, wr_id, bg_1, bg_2, bg_3 아래와 같이 저장이 되어있습니다.
wr_id | aaa | bg_1 | bg_2 | bg_3
--------------------------------
11 | abc | 9999 | 8128 | 7777
11 | abc | 9009 | 8888 | 7107
11 | abc | 9999 | 8012 | 7777
11 | abc | 2319 | 8888 | 7148
11 | abc | 9799 | 8888 | 7777
bg_1 중복은 하나로 묵고 카운트는 합친수를 구한다.
bg_2 중복은 하나로 묵고 카운트는 합친수를 구한다.
bg_3 중복은 하나로 묵고 카운트는 합친수를 구한다.
이렇게 하려면 sql을 어떻게 해야 하는지요?
아래와 같이하면 다 출력이 되는데요.
각 항목 중복은 합치고 카운트수는 합친수로 출력
리스트는 합친수가 많은 순으로 출력
잘 아시는 고수님 도움 좀 부탁드립니다.
<?php
$sql = " select *, bg_1, count(*) AS bg_con from g5_table_aaa where aaa = '".$aaa."' and wr_id = ".$wr_id." group by bg_1 order by bg_con desc ";
$query = sql_query($sql);
while($row = sql_fetch_array($query)){
$rows = sql_fetch(" select count(*) as count from g5_table_aaa where aaa = '".$aaa."' and wr_id = ".$wr_id." and bg_1 = '".$row['bg_1']."' ");
?>
<div class="li"><?php echo $row['bg_1']; ?> (<?php echo $rows['count']; ?>)</div>
<div class="li"><?php echo $row['bg_2']; ?> (<?php echo $rows['count']; ?>)</div>
<div class="li"><?php echo $row['bg_3']; ?> (<?php echo $rows['count']; ?>)</div>
<?php } ?>
답변 3
$sql = "SELECT * FROM g5_table_aaa";
$qry = sql_query($sql);
$bg_1 = array();
$bg_1_cnt = 1;
$bg_2 = array();
$bg_2_cnt = 1;
$bg_3 = array();
$bg_3_cnt = 1;
$bg_1_sum = 0;
$bg_2_sum = 0;
$bg_3_sum = 0;
while($row = sql_fetch_array($qry)){
if(in_array($row["bg_1"], $bg_1)){
$bg_1_cnt++;
}else{
$bg_1[] = $row["bg_1"];
$bg_1_sum += $row["bg_1"];
}
if(in_array($row["bg_2"], $bg_2)){
$bg_2_cnt++;
}else{
$bg_2[] = $row["bg_2"];
$bg_2_sum += $row["bg_2"];
}
if(in_array($row["bg_3"], $bg_3)){
$bg_3_cnt++;
}else{
$bg_3[] = $row["bg_3"];
$bg_3_sum += $row["bg_3"];
}
}
$temp = array();
$temp[0]["cnt"] = $bg_1_cnt;
$temp[1]["cnt"] = $bg_2_cnt;
$temp[2]["cnt"] = $bg_3_cnt;
$temp[0]["sum"] = $bg_1_sum;
$temp[1]["sum"] = $bg_2_sum;
$temp[2]["sum"] = $bg_3_sum;
foreach ((array) $temp as $key => $value) {
$sort[$key] = $value['sum'];
}
array_multisort($sort, SORT_DESC, $temp);
print_r($temp);
요런 느낌인데 배열을 좀 더 신경쓴다면 더 좋은 코드가 나올듯 하네요
!-->bg_1 중복은 하나로 묵고 카운트는 합친수를 구한다.
==
설명이 잘 이해가 안 되네요
원하시는 결과를 표로 만들어 설명해 보세요.
짐작에는 select를 3번 해야 될 것 같습니다
답변을 작성하시기 전에 로그인 해주세요.