채택완료

특정 db 컬럼 카운트

db 컬럼에 car_number1 / car_number2 / car_number3 이 3개가 있는데요

값이 있을수도 있고 없을수도 있습니다.

 

값이 있는 컬럼 카운트는 어떻게 뽑나요?

 

예를들어

car_number1 와 car_number2 에 값이 있다면 2 라고 카운트 출력하고 싶어서요~

 

|

답변 2개

채택된 답변
+20 포인트

테이블은 table이라고 하겠습니다.

Copy
<?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수만큼 서로 카운트후 더하는 내용입니다.

Copy
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');

 

Copy
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`

 

Copy
id    count
1    2
2    2
3    0
4    2
5    3
6    1
7    2

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