Tenho as seguintes tabelas:
QUARTO
------------
numero_quarto varchar(5) PK NOT NULL,
tipo_quarto integer FK NOT NULL,
valor_quarto numeric(7,2) NOT NULL,
capacidade_quarto integer NOT NILL
TIPOSQUARTO
--------------------
id_tipoquarto SERIAL PK NOT NULL,
descricao_tipoquarto varchar(30)
FRIGOBARS
----------------
quarto_frigobar FK PK NOT NULL, --(FK >> QUARTOS)
produto_frigobar FK PK NOT NULL, --(FK >> PRODUTOS)
quantidade_frigobar integer NOT NULL
PRODUTO
--------------
id_produto SERIAL PK NOT NULL,
descricao_produto varchar(50) NOT NULL,
valor_produto numeric(7,2)
Preciso fazer uma consulta que me traga:
numero_quarto | descricao_tipoquarto | valor_quarto | capacidade_quarto
| frigobar
1 Luxo 100,00 3
'COM'
2 Simples 80,00
2 'SEM'
Minha dificuldade está na coluna "frigobar". Pela lógica, eu sei o que
deve ser feito. Deve-se procurar na tabela frigobar se existe um
registro para o número do quarto em questão.
Se houver retornar a palavra 'COM', caso contrário retornar 'SEM'. Porém
não sei como montar o SQL para esse caso.
Existe o SELECT CASE, mas não encontrei um jeito de colocar tudo em uma
só query.
Eu consigo trazer uma parte com o trivial JOIN:
SELECT
"QUARTOS"."numero_quarto",
"TIPOSQUARTO"."descricao_tipoquarto",
"QUARTOS"."valor_quarto",
"QUARTOS"."capacidade_quarto"
FROM
"QUARTOS"
JOIN
"TIPOSQUARTO" ON "QUARTOS"."tipo_quarto" =
"TIPOSQUARTO"."id_tipoquarto";
Mas não achei uma maneira de fazer o lance do frigobar.
Eu também precisaria criar um select que me retornasse quantos quartos
existem de cada tipo, também sei a lógica, (procurar na tabela "QUARTOS"
quantos são do tipo 1, 2, 3, ....).
Isso pode ser feito com COUNT() + WHERE, mas eu preciso uma query que
retorne.
descricao_tipoquarto | COUNT()
Luxo 10
Simples 20
Grato!
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral