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

Responder a