Help em construcão de Select.
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.
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
Curtidas 0
Respostas
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.
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