Help em construcão de Select.

Firebird

17/05/2004

Oi! Blz!! ??

Deu um branco aqui numa questão.

Ex:

- 3 Tabelas ( Pais , Cidades , Hoteis),

create table PAIS (PAIS_ID integer, NOME varchar(15));

INSERT INTO PAIS (PAIS_ID, NOME) VALUES (1, ´Brasil´);
INSERT INTO PAIS (PAIS_ID, NOME) VALUES (2, ´Argentina´);
INSERT INTO PAIS (PAIS_ID, NOME) VALUES (3, ´Alemanha´);

create table CIDADES (PAIS_ID integer ,CIDADES_ID integer, NOME
varchar(20));

INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (2, 4, ´Lago da
Siri´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (1, 2, ´Rio de
Janeiro´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (1, 3, ´São Luis´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (1, 1, ´São Paulo´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (2, 5, ´Buenos
Aries´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (2, 6, ´La Suncion´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (3, 7, ´Kuzifi´);
INSERT INTO CIDADES (PAIS_ID, CIDADES_ID, NOME) VALUES (3, 8, ´Megragf´);


create table HOTEIS (CIDADES_ID integer ,HOTEIS_ID integer ,NOME
varchar(20));

INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (1, 1, ´HOTEL H´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (1, 2, ´HOTEL Z´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (2, 3, ´HOTEL PP´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (2, 4, ´HOTEL BLA
BLA´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (2, 5, ´HOTEL VV´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (3, 6, ´HOTEL SAO
L´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (5, 7, ´HOTEL LA
LA´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (5, 8, ´HOTEL
BIBI´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (6, 9, ´HOTEL II´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (7, 10, ´HOTEL KA
KA´);
INSERT INTO HOTEIS (CIDADES_ID, HOTEIS_ID, NOME) VALUES (8, 11, ´HOTEL RIK
LLI´);

COMMIT WORK;



// Esse Select abaixo me retorna o Nº de Hoteis por Pais.

select p.NOME , count(p.PAIS_ID) from PAIS p
right join CIDADES c on (c.PAIS_ID = p.PAIS_ID)
right join HOTEIS h on (h.CIDADES_ID = c.CIDADES_ID)
group by p.NOME


Sendo que relacionadas HOTEIS para CIDADES para PAIS.

1º) Como seria um Select que me retornaria o Pais com maior numero de
hoteis?
OBS: no caso ai dos dados... o teste é correto se trazer somente o Pais Brasil , pois eh o unico que tem mais hoteis lançado.

2º) E a Cidade com maior numero de Hoteis ?



Agradeço de já a ajuda.


Chaplinux

Chaplinux

Curtidas 0

Respostas

Chaplinux

Chaplinux

17/05/2004

Uma OBS:

Isso eh um trabalho de facudade...
não vale View, Procedure, nem gambiarra ....

iguais a essa:

select FIRST 1 p.NOME , count(p.PAIS_ID) from PAIS p
right join CIDADES c on (c.PAIS_ID = p.PAIS_ID)
right join HOTEIS h on (h.CIDADES_ID = c.CIDADES_ID)
group by p.NOME
order by 2 desc


Vamos supor que tem dois Paises que tem a mesma quantidade de Hoteis..., esse Select ai me vai trazer soh um!

Entende!

Obrigado.


GOSTEI 0
POSTAR