특정 db 컬럼 카운트
본문
db 컬럼에 car_number1 / car_number2 / car_number3 이 3개가 있는데요
값이 있을수도 있고 없을수도 있습니다.
값이 있는 컬럼 카운트는 어떻게 뽑나요?
예를들어
car_number1 와 car_number2 에 값이 있다면 2 라고 카운트 출력하고 싶어서요~
답변 2
테이블은 table이라고 하겠습니다.
<?php
$row = sql_fetch("select (select count(car_number1) from table where car_number1 <> '') +
(select count(car_number1) from table where car_number2 <> '') as carcount");
echo $row['carcount'];
위의 조건절에 Record마다 조건을 붙이면 각 Row별로 컬럼의 값을 존재하는것들만 추출가능하고
위의 쿼리는 car_number1 과 car_number2 의 각 값이 존재하는 row수만큼 서로 카운트후 더하는 내용입니다.
!-->
DROP TABLE IF EXISTS `zoo4`;
CREATE TABLE IF NOT EXISTS `zoo4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`car_number1` varchar(255) NOT NULL DEFAULT '',
`car_number2` varchar(255) NOT NULL DEFAULT '',
`car_number3` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `zoo4` VALUES(1, 'a', 'a', '');
INSERT INTO `zoo4` VALUES(2, 'a', '', 'a');
INSERT INTO `zoo4` VALUES(3, '', '', '');
INSERT INTO `zoo4` VALUES(4, '', 'a', 'a');
INSERT INTO `zoo4` VALUES(5, 'a', 'a', 'a');
INSERT INTO `zoo4` VALUES(6, 'a', '', '');
INSERT INTO `zoo4` VALUES(7, 'a', '', 'a');
SELECT
`id`,
SUM(IF(`car_number1`!='', 1, 0) + IF(`car_number2`!='', 1, 0) + IF(`car_number3`!='', 1, 0)) AS `count`
FROM `zoo4`
WHERE 1
GROUP BY `id`
id count
1 2
2 2
3 0
4 2
5 3
6 1
7 2
답변을 작성하시기 전에 로그인 해주세요.