Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com consulta em base de dados


biza

Pergunta

Viva pessoal,

Estou aqui com um enorme problema, que gostaria que alguém me ajuda-se a solucionar. 

Tenho duas tabelas que gostaria de exibir todos os seus dados, o problema é que inicialmente queria fazer um filtro em que me devolve-se cada um por colunas distintas, ou seja tenho vários dados repetidos, contudo só queria exibir os distintos o que iria resultar um dado de cada tipo.

CREATE TABLE `tbl_galeria` (
`id_galeria` int(11) NOT NULL,
  `imagem` varchar(80) CHARACTER SET latin1 NOT NULL,
  `ref` varchar(4) COLLATE utf8_unicode_ci NOT NULL,
  `data_last_inser` date NOT NULL,
  `activo` int(1) NOT NULL,
  `subMultimedia_id` int(11) NOT NULL,
  `evento_id` int(11) NOT NULL,
  `epoca_id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


CREATE TABLE `tbl_evento` (
`id_evento` int(11) NOT NULL,
  `evento` varchar(150) NOT NULL,
  `data_last_inser` date NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

esta é a forma como estou a efectuar a consulta:

SELECT tbl_evento.id_evento,tbl_evento.evento, tbl_evento.data_last_inser 
FROM tbl_evento JOIN (SELECT DISTINCT(tbl_galeria.evento_id) 
FROM tbl_galeria GROUP BY tbl_galeria.evento_id) as galeria ON tbl_evento.id_evento 

esta a funcionar correctamente contudo não me exibe todos os campos..

qualquer ajuda é bem vinda

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom Dia.

Se os campos que você quer estão somente na tabela tbl_evento, então você pode fazer a consulta assim:

SELECT tbl_evento.id_evento,tbl_evento.evento, tbl_evento.data_last_inser 
FROM tbl_evento 
WHERE tbl_evento.id_evento IN (SELECT DISTINCT tbl_galeria.evento_id 
FROM tbl_galeria);

 

Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, Denis Courcy disse:

Bom Dia.

Se os campos que você quer estão somente na tabela tbl_evento, então você pode fazer a consulta assim:


SELECT tbl_evento.id_evento,tbl_evento.evento, tbl_evento.data_last_inser 
FROM tbl_evento 
WHERE tbl_evento.id_evento IN (SELECT DISTINCT tbl_galeria.evento_id 
FROM tbl_galeria);

 

Caro Denis, 

Obrigado por sua resposta, o problema é que também os dados da tabela  galeria me fazem falta, verifique  que a diferença entre a minha consulta e a sua é praticamente nenhuma, eu preciso devolver todos os campos que sejam distintos da tbl_galeria.ref.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite. Lembra o que falei na segunda linha de minha resposta?

Citar

Se os campos que você quer estão somente na tabela tbl_evento...

Agora você está mencionando um campo de outra tabela vamos a uma nova opção:

SELECT t.id_evento,t.evento, t.data_last_inser, g.ref
FROM tbl_evento t
INNER JOIN (SELECT DISTINCT tbl_galeria.evento_id, tbl_galeria.ref FROM tbl_galeria) g ON g.id_evento = t.id_evento;

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, biza disse:

Denis , esta resolvido, mas agora só por curiosidade caso tenha mais tabelas que relacione com a tbl_galeria como devo proceder? Obrigado

 

Vai depender do problema. Cada problema tem uma forma de solucionar. Não há padrão.

Estude sobre álgebra relacional (isto que fizemos). Intercessão de conjuntos (uso de inner join ou left join). Conjunto união (uso de union). etc.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...