사용자 조건에 따라 데이터가 존재하지 않으면 MySQL에서 새로운 가상 행을 만들 수 있습니까?
내 쿼리는 다음과 같습니다SQL : 명령 존재하지 않는 경우 가상 행 만들기
SELECT year, value, type FROM myTable
WHERE year BETWEEN ('2010' AND '2013') AND type IN ('Oil', 'Gas');
출력 :
year | value | type
---------------------
2013 | 0 | Oil
2012 | 144.5 | Oil
2012 | 434.3 | Gas
2011 | 141.0 | Oil
2011 | 1234 | Gas
2010 | 4567 | Gas
---------------------
이 같은 출력을 기록하는 쿼리를 실행하려면 :
year | value | type
---------------------
2013 | 0 | Oil
2013 | 0 | Gas // -> new virtual* row
2012 | 144.5 | Oil
2012 | 434.3 | Gas
2011 | 141.0 | Oil
2011 | 1234 | Gas
2010 | 4567 | Gas
2010 | 0 | Oil // -> new virtual* row
---------------------
사용자가 모두 표시 할을 'Gas'와 'Oil'이 있지만 2013 년 이후에는 'Oil'유형 만 포함되어 있으므로 0 값으로 'Gas'에 대한 새 레코드를 만들고 싶습니다. '2010'과 동일합니다 (원하는 출력 위).
편집 :
CREATE TABLE `myTable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(15) DEFAULT NULL,
`year` year(4) DEFAULT NULL,
`value` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=92278 DEFAULT CHARSET=latin1
은 쉽게 클라이언트 측 (PHP)에이보기를 제공 할 수 있습니다 선호하는, 사실상 쿼리 동안 해당 행을 추가하는 것입니다 왜 이런 종류의 쿼리를 검색하고 있습니까? –
유형으로 석유와 가스 만 있습니까? – Mihai
'type'도 동적이며 '석탄', '전원'등과 같이 사용자 입력에 따라 다를 수 있습니다. (실제로, 나는 두 개의 테이블을 가지고 있는데, 하나는 값을위한 것이고 다른 하나는 typeNames를위한 것이다.) – 1mr3yn