Fórum Query com 3 tabelas (relacionamento muitos-muitos) #46746
16/09/2004
0
Motoristas Veiculos MotVei
Codigo Placa Placa
Nome Renavan CodMot
End Proprietario
... ....
Cada motorista pode ter varias placas cadastradas para si, assim como uma placa pode estar cadastrada pra varios motoristas
Preciso fazer um select sobre a tabela MotVei pra efeito de manutenção, para que o usuário possa retirar placas, motoristas
no caso o select que eu gostaria que fosse gerado digamos:
select MotVei.Placa, MotVei.CodMot, (alguns campos do Motoristas e alguns campos do Veiculos)
tentei com inner join:
SELECT
MOTVEI.CODMOT,
MOTVEI.PLACA,
MOTORISTAS.NOME,
VEICULOS.PROPRIETARIO
FROM
MOTVEI
INNER JOIN MOTORISTAS ON (MOTVEI.CODMOT = MOTORISTAS.CODIGO)
INNER JOIN VEICULOS ON (MOTVEI.PLACA = VEICULOS.PLACA)
ela me retorna sempre mull... tentei com algumas outras combinações e me retorna todo mundo relacionado com todo mundo mesmo que nao cadastrado no MotVei, pra teste tenho somente 2 relacionamento lá, e quando simplesmente o junto com o MOTORISTAS sem a tabela veiculo ele seciona correto, mas qdo junto a tabela veiculo bagunca tudo...
Se alguem souber uma solução
Desde já agradeço!!
Abraço
Tuskinhu
Curtir tópico
+ 0Posts
16/09/2004
Fsflorencio
Gostei + 0
16/09/2004
Tuskinhu
** motoristas **
CREATE TABLE MOTORISTAS (
CODIGO DM_CODIGO NOT NULL,
TIPO DM_TIPO DEFAULT ´´,
DATA_CADASTRO DM_DATA DEFAULT ´now´,
NOME DM_NOMES NOT NULL,
...
VCTO_CADASTRO DM_DATA,
OBS DM_OBS DEFAULT ´´,
ATUALIZADO DM_DATA DEFAULT ´now´);
ALTER TABLE MOTORISTAS ADD CONSTRAINT PK_MOTORISTAS PRIMARY KEY (CODIGO);
CREATE UNIQUE INDEX MOTORISTAS_CPF ON MOTORISTAS (CPF);
CREATE INDEX MOTORISTAS_NOME ON MOTORISTAS (NOME);
CREATE UNIQUE INDEX PK_MOTORISTAS ON MOTORISTAS (CODIGO);
** VEICULOS **
CREATE TABLE VEICULOS (
PLACA DM_PLACA NOT NULL,
PROPRIETARIO DM_NOMES,
CNPJCPF DM_CNPJCPF,
...
CAPACIDADE DM_CAPACIDADE,
OBS DM_OBS,
ATUALIZADO DM_DATA DEFAULT ´now´);
ALTER TABLE VEICULOS ADD CONSTRAINT PK_VEICULOS PRIMARY KEY (PLACA);
CREATE UNIQUE INDEX PK_VEICULOS ON VEICULOS (PLACA);
**MOTVEI***
CREATE TABLE MOTORISTVEICULOS (
MOTORISTA DM_CODIGO NOT NULL,
PLACA DM_PLACA NOT NULL,
ATUALIZADO DM_DATA DEFAULT ´now´);
ALTER TABLE MOTORISTVEICULOS ADD CONSTRAINT PK_MOTORISTVEICULOS PRIMARY KEY (MOTORISTA, PLACA);
CREATE INDEX ID_MOTVEI_MOTORISTA ON MOTORISTVEICULOS (MOTORISTA);
CREATE INDEX ID_MOTVEI_PLACA ON MOTORISTVEICULOS (PLACA);
CREATE UNIQUE INDEX PK_MOTORISTVEICULOS ON MOTORISTVEICULOS (MOTORISTA, PLACA);
Gostei + 0
17/09/2004
Fsflorencio
Para retornar nulo é possível que esteja faltando o registro em uma das tabelas.
Faça um teste com poucos registros e verifique o resultado.
Gostei + 0
17/09/2004
Tuskinhu
eu estava fazendo o teste com poucos registros, mas uma das placas que eu tinha cadastrado nao estava no veiculos... deve ter sido ai o erro !!
obrigado pela ajuda!!!!!
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)