sábado, 19 de agosto de 2023

Verificando validade de produtos com 'case when'

 Hoje vamos conhecer uma utilidade muito interessante para a expressão “case when” em bancos de dados. Neste “post” vamos verificar a validade de produtos com o MySQL. Siga os passos:

 1.       Criar tabela de produtos:

 CREATE TABLE `produtos` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `produto` VARCHAR(50) NOT NULL,
    `validade` DATE NOT NULL,
    PRIMARY KEY (`id`)
);

2.       Cadastre alguns produtos; deixe alguns com a data de validade anterior ao dia atual:


Agora utilize a seguinte SQL para relacionar os produtos vencidos:

 SELECT produto,
case
when
validade > CURDATE() then 'produto válido'
when validade = CURDATE() THEN 'vencendo hoje'
when validade < CURDATE() then 'atenção - VENCIDO'
END
situacao,
validade
FROM produtos;

 Ou seja, SE a data de validade for maior que (>) a data atual (função CURDATE()), o banco de dados imprimirá a frase 'produto válido'; se igual, 'vencendo hoje'; e, claro, se a data de validade for inferior (<) à data de hoje será impressa a expressão 'atenção - VENCIDO'; a esta coluna dei o nome de “situacao". Veja o resultado:

É isso aí. Por hoje é só, pessoal.

 

quarta-feira, 2 de agosto de 2023

Saiba quem participou de eventos com MySQL e a função ‘group_concat’

 Uma função muito útil do MySQL é a “group_concat”, que concatena várias linhas em um só campo. Neste “post” vamos colocá-la em prática para verificar quais foram os participantes de determinados eventos.

O primeiro passo é ter uma tabela com os participantes. Use o código abaixo para criar a sua (neste “post”, a tabela se chamará “alunos”):

 CREATE TABLE `alunos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(50) NOT NULL,
PRIMARY
KEY (`id`)
);

 Agora insira alguns nomes; a minha tabela ficou assim (recomendo que sejam vários e observe a ordem):

 


 Agora vamos criar a tabela de cursos:

 CREATE TABLE `cursos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`curso` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);

 Neste “post”, vamos inserir apenas quatro cursos:


 Para relacionar as duas tabelas, vamos agora criar uma terceira, que chamaremos de cursos_alunos; repare que, além da coluna de chave primária (id), também serão criadas duas colunas, sendo uma para os “ids” dos cursos e outra para os “ids” dos alunos:

 CREATE TABLE `cursos_alunos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`idcurso` INT(10) NOT NULL,
`idAluno` INT(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

 


Agora já podemos criar a consulta que nos exibirá os cursos e os respectivos alunos que os frequentaram:

 select cursos.curso, group_concat(" ", alunos.nome) alunos
from cursos
INNER JOIN
cursos_alunos
on
cursos_alunos.idcurso = cursos.id
INNER Join
alunos
on
cursos_alunos.idAluno = alunos.id
group by cursos.curso;

Observe que os alunos “Tite” e “Vanderlei” frequentaram dois cursos: o de PHP e o de Java; o que está sendo exibido corretamente.

Por hoje é só, pessoal.