Minha tabela original era (sendo usada desde 2005):
CREATE TABLE `request` (
`msg` VARCHAR(150) NOT NULL,
`id` VARCHAR(20) NOT NULL,
`ctg` VARCHAR(10) NOT NULL DEFAULT 'misc',
`date` VARCHAR(25) NULL DEFAULT NULL,
`status` VARCHAR(10) NOT NULL DEFAULT 'empty',
`fid` BIGINT(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`fid`),
UNIQUE INDEX `msg_id` (`msg`, `id`),
UNIQUE INDEX `msg_ctg` (`msg`, `ctg`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
CHECKSUM=1
AUTO_INCREMENT=18491;
Como não era um bom gerenciamento de tabela nem apreciável por mim, criei uma tabela mais recente:
CREATE TABLE `requests` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ctg` VARCHAR(15) NOT NULL,
`msg` VARCHAR(250) NOT NULL,
`nick` VARCHAR(32) NOT NULL,
`filled` ENUM('Y','N') NOT NULL DEFAULT 'N',
`dated` DATETIME NOT NULL,
`filldate` DATETIME NULL DEFAULT NULL,
`filledby` VARCHAR(32) NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `nick_msg` (`nick`, `msg`),
UNIQUE INDEX `ctg_msg` (`ctg`, `msg`)
)
COMMENT='Requests from users in any of the categories.'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
O que eu quero fazer agora é:
SELECIONE os dados da primeira tabela e insira da seguinte maneira:
msg
tomsg
,id
tonick
,ctg
toctg
edate
todated
são copiados como estão.status
na tabela original éempty
oufilled
. Eu quero usar umaCASE
cláusula durante a inserção para queY
eN
sejam inseridos de acordo.
Minha consulta:
INSERT INTO `requests`( `id`, `ctg`, `msg`, `nick`, `dated`, `filled` )
SELECT `fid`,
`ctg`,
`msg`,
`id`,
`date`,
CASE
WHEN `status` = 'empty' THEN 'N'
WHEN `status` = 'filled' THEN 'Y'
END CASE
FROM `request`
Minha pergunta é
A consulta acima é perfeita? Além disso, uma das strings de amostra da
request
tabela com 'filled'
status' é como:
.hack//SIGN (filled by hjpotter92 in 02/08/12 09:47:07 )
o formato é o mesmo: filled by <<nick>> in <<<date>> in <<mm/dd/yy H:I:S>>
para todas as entradas preenchidas. Posso extrair a data de lá e usar STR_TO_DATE()
para passar em filldate
campo também? Eu sei que precisaria de mim para criar um procedimento/função.
Por enquanto, estou pensando em usar PHP para a tarefa, mas queria uma solução MySQL limpa, se possível.
então é trabalho para mim..