Mais um exercício de SQL que divulgo a solução!
Antes de resolver qualquer problema de SQL do URI (agora BEECROWD), recomendamos seguir os seguintes passos:
- Ler todo enunciado do problema.
- Ler os tópicos do fórum em caso de dúvidas
- Preparar o esquema, conforme fornecido no problema. Obs.: muitas vezes o pessoal coloca o código de criação do esquema no fórum, então é só copiar!
Plataforma: URI (BEECROWD)
Problema: 2623
Solução:
Abaixo está o código que usei para obter o aceite na questão 2623. Podia ter ficado muito maior, mas usando o operador IN ele diminui, porque testa o id da categoria dentro daquele conjunto de valores. Tirando o operador IN, a solução não foge daquilo que já vimos nos outros posts sobre SQL. Bastava selecionar o nome do produto e o nome da categoria, das respectivas tabelas, verificando se a categoria se enquadrava naquela lista de categorias (1, 2, 3, 6 ou 9), se a quantidade de produtos era maior que 100 e, para evitar duplicações, exibir somente quando a categoria do produto coincide com um id da tabela categoria. Após isso, bastava ordenar a resposta pela coluna id_categorias da tabela products.
E aí, achou complexo? Compreendeu a solução?
SELECT products.name, categories.name FROM products, categories WHERE products.id_categories IN (1,2,3,6,9) AND products.amount > 100 AND products.id_categories = categories.id ORDER BY products.id_categories;