Tabela de Carro Novos (tb_carro_novo)
car_codigo ----- int ----- not null ----- PK
car_modelo ----- varchar ----- not null
car_marca ----- varchar ----- not null
car_cor ----- varchar ----- not null
Tabela de Carro Usados (tb_carro_usado)
car_codigo ----- int ----- not null ----- PK
car_modelo ----- varchar ----- not null
car_marca ----- varchar ----- not null
car_cor ----- varchar ----- not null
Tabela de Placas Registradas (tb_placa)
pla_codigo ----- int ----- not null ----- PK car_codigo ----- int ----- not null ----- FK
pla_numero ----- varchar ----- not null
Com as tabelas definidas vamos montar uns exeplos de consultas:
Consulta simples dos carros novos:
Select * from tb_carro_novo // Selecionar todos os carros novos
Consultas compostas entre tabela de carros usados e suas tabela de placas registradas na tabela de placas:
1º modo:
Select * from tb_carro_usado X, tb_placa Z
where x.car_codigo = z.car_codigo
Observe: Ao selecionar a tabela de carros usados eu apelidei a tabela de "X" para que fique menor o código e a tabela de placas fiz o mesmo chamando de "Z" , veja como ficaria se não fizesse isso:
Select * from tb_carro_usado, tb_placa
where tb_carro_usado.car_codigo = tb_placa.car_codigo
Com duas tabelas o código fica somente um pouco maior, mas vamos dizer que você precise selecionar 3 ou 4 tabelas, o código ficará bem maior.
Agora vou explicar um pouco sobre a família JOIN que tem muita gente que não sabe muito bem como funciona então vamos lá:
Left Join: Verificará e trará os campos solicitados somente da tabela que estiver a esquerda da comparação entre tabelas relacionadas.
Right Join: O mesmo fará o right join porém buscando os campos da tabela que está a direita da comparação entre as tabelas relacionadas.
Inner join: O efeito é trazer os campos de ambas tabelas relacionadas dentro da comparação feita entre elas.
então vamos ao 2º Modo:
Select * from tb_carro_usado X left join (tb_placa Y) on
(X.caruso_codigo = Y.caruso_codigo)
Sendo assim buscamos os dados contidos na tabela de carros usados que estão cadastradas placas referentes a eles, os que não estiverem não serão mostrados.
Vamos selecionar todos os carros novos e usados numa mesma consulta usando o camando Union, observe:
select * from tb_carro_novo union select * from tb_carro_usado
O banco de dados trará os dados da primeira tabela selecionada e em seguida o da segunda tabela no mesmo resultado, mas reparem que ele manteve a descrição da coluna da primeira tabela, porém ninguém uni nada sem um objetivo verdadeiro, então vamos dizer que o cliente quer saber quais carros da marca CHEVROLET a loja tem sendo usado ou não ai a chamada dos dados ficaria assim:
(select * from tb_carro_novo where carnovo_marca = 'CHEVROLET')
union
(select * from tb_carro_usado where caruso_marca = 'CHEVROLET')
Observe que eu coloquei a cláusula where dentro do primeiro select e depois no segundo select para que traga a condição nas duas tabelas.
Algumas pessoas podem estranhar o motivo de eu colocar o nome CHEVROLET em maiúsculo, é que eu mantenho o meu banco de dados utilizando maiúsculo para padronização de tamanho.
Agora só pra terminar vamos selecionar na tabela de carros novos um lista de modelos de carros.
Select * from tb_carro_novo
where carnovo_modelo in ('CIVIC', 'CELTA', 'FIESTA')
union
Select * from tb_carro_usado
where caruso_modelo in ('PALIO', 'GOL', 'CLIO')
where carnovo_modelo in ('CIVIC', 'CELTA', 'FIESTA')
union
Select * from tb_carro_usado
where caruso_modelo in ('PALIO', 'GOL', 'CLIO')
Sendo que eu não adicionei nenhum carro da Renault o CLIO não aparecerá, caso contrário estará lá no resultado.
Bom, esta foi mais uma ajudinha pra galera.
Espero ter ajudado.
Que a força esteja com os Geeks.





