Operation CREATE TABLE:
CREATE TABLE `Tovar` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`idPreparat` MEDIUMINT(6) UNSIGNED NULL DEFAULT NULL,
`drugApt` VARCHAR(250) NULL DEFAULT NULL,
`countryApt` VARCHAR(250) NULL DEFAULT NULL,
`manfApt` VARCHAR(250) NULL DEFAULT NULL,
`md5` BINARY(16) NOT NULL,
PRIMARY KEY (`id`),
INDEX `ix_prep` (`idPreparat`),
INDEX `ix_md5` (`md5`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
inquiry:
SELECT id,
IF(COUNT(Tovar.id)=1,Tovar.drugApt,'') AS `drugApt`,
IF(COUNT(Tovar.id)=1,Tovar.countryApt,'') AS `countryApt`,
IF(COUNT(Tovar.id)=1,Tovar.manfApt,'') AS `manfApt`
FROM Tovar
WHERE Tovar.md5=0x00000000000000000000000000000000
GROUP BY Tovar.idPreparat
How to replace three IFs with one IF (COUNT (Tovar.id) = 1,)? add my idea:
CASE COUNT(Tovar.id)>1
WHEN true THEN CONCAT_WS(@drugApt:='Tovar.drugApt',@countryApt='Tovar.countryApt',@manfApt='Tovar.manfApt')
WHEN false THEN CONCAT_WS(@drugApt:='',@countryApt='',@manfApt='')
END
source
share