Em 17/05/15, Matheus Saraiva<[email protected]> escreveu: > 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! > _______________________________________________
Faça um LEFT OUTER JOIN com a tabela FRIGOBARS e teste, no resultado, se algum de seus campos é NULL, caso em que não tem frigobar. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
