Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cesar Augusto Graeff

Listagem De Duas Tabelas

Recommended Posts

olá,

 

 

Tenho duas Tabelas a Tabela Notificações e a Tabela Recados quero listar as duas tabelas em uma unica lista sem relacionar as duas tabelas e Ordenar por Data.

 

 

TABELA NOTIFICACOES TABELA RECADOS

id id

type de

uid para

action recado

data data

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cesar,

 

Acho que é algo assim:

 

SELECT notificacoes.*, recados.* 
   FROM notificacoes, recados
ORDER BY notificacoes.data

 

Ou pode usar ALIAS xD

 

Não entendi muito bem sua dúvida, mas acho que é isso!

 

Boa sorte aew o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

è isto Mesmo que Quero Fazer Porem com Essa SQL não dá.

 

Achei Este Link http://forum.imasters.com.br/topic/293222-resolvido-select-em-duas-tabelas/ e é Isto que Eu Quero Fazer

 

E Ali Achei Esta SQL:

 

 

sql = 	"SELECT cdevento as codigo, nmevento as nome, dtevento as data, 1 AS identificacao FROM evento "&_" UNION " &_"SELECT cdnoticia as codigo, nmnoticia as nome, dtnoticia as data, 2 AS identificacao FROM noticia "&_"ORDER BY data DESC"

 

E Modifiquei Ela Para Isto:

 

 


SELECT id,de,para,recado,data FROM recados UNION
SELECT id,type,uid,action,data FROM notificacoes ORDER BY data DESC

 

 

Porem Quando Executo Exibe Esta Mensagem:

 

SQLSTATE[HY000]: General error: 1271 Illegal mix of collations for operation 'UNION'

 

 

Então Nao Estou Conseguindo Fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Aparentemente os atributos Character set, Engine e/ou collation estão diferentes.

 

Quando chegar em casa eu verifico no meu PC ^^

 

Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Pesquisei Sobre este erro Na Internet e Modifiquei minha SQL para Essa:

 

 

 

SELECT id,data FROM recados UNION
SELECT id,data FROM notificacoes ORDER BY data DESC
Dai Quanto Fiz o rowCount Retornou o Numero De Linhas Corretas
Mas No Fetch Não Retornou Todos os Resultados
E Presciso De Todos as colunas não somente as colunas id e data

Compartilhar este post


Link para o post
Compartilhar em outros sites

É so alterar para SELECT * FROM, nas duas select.

O * significa ALL.

 

Ou seja, selecionará todos da tabela desejada.

Acho que é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para trazer linhas, mesmo com dados repetidos, use UNION ALL.

As colunas tem que ter o mesmo tipo de dados e devem estar na mesma ordem, exemplo (os valores entre < e > é somente para indicar o tipo de dados que estou usando):

 

 

SELECT id<int>, nome<varchar>, data_cadastro<datetime>, 'usuario' as tipo FROM usuarios 
UNION ALL
SELECT id<int>, titulo<varchar>, data_publicacao<datetime>, 'noticia' as tipo FROM noticias

Veja que, para facilitar a identificação de cada registro, o retorno traz também uma coluna extra contendo o tipo do registro (usuario ou noticia).

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verificou se em ambas tabelas, você está utilizando o mesmo charset?

Exemplo:

 

Na tabela de noticia, na coluna titulo, você está usando UTF-8.

Na tabela usuario, na coluna nome, você está usando LATIN-1.

 

Quando isto ocorre, este erro é disparado.

 

Discussão parecida:

 

https://github.com/hananils/subsectionmanager/issues/185

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verificou se em ambas tabelas, você está utilizando o mesmo charset?

Exemplo:

 

Na tabela de noticia, na coluna titulo, você está usando UTF-8.

Na tabela usuario, na coluna nome, você está usando LATIN-1.

 

Quando isto ocorre, este erro é disparado.

 

Discussão parecida:

 

https://github.com/hananils/subsectionmanager/issues/185

 

@braços

 

 

Consegui Fazer :)

 

Os Collations Estavam Diferentes Nas Duas Tabelas

 

Então só Troquei Eles

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora Estou Com Outro Problema Preciso Selecionar as Notificações e Recados somente de Quem é meu Amigo e Tentem Fazer com um INNER JOIN porem não deu certo.

 

Tabela Amizades

id

de

para

status

 

MInha SQL:

 

 

SELECT * ,1 AS tipo  FROM notificacoes AS r UNION  ALL
SELECT  *, 2 AS tipo  FROM recados AS r
INNER JOIN amizade a ON (((r.uid=a.de) AND (a.para=?)) OR ((r.uid=a.para) AND (a.de=?)))
ORDER BY data DESC

 

Ao Executar Isto Aparece o Seguinte Erro

 

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'r.uid' in 'on clause'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

SELECT * FROM (
	SELECT * ,1 AS tipo  FROM notificacoes
	UNION  ALL
	SELECT  *, 2 AS tipo  FROM recados
) as r
INNER JOIN amizade a ON (((r.uid=a.de) AND (a.para=?)) OR ((r.uid=a.para) AND (a.de=?)))
ORDER BY data DESC

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

SELECT * FROM (
	SELECT * ,1 AS tipo  FROM notificacoes
	UNION  ALL
	SELECT  *, 2 AS tipo  FROM recados
) as r
INNER JOIN amizade a ON (((r.uid=a.de) AND (a.para=?)) OR ((r.uid=a.para) AND (a.de=?)))
ORDER BY data DESC

 

@braços

 

Deu Certo :joia:

 

O select deu certo mas retorna os campos da tabela amizade também como faço para isto não Acontecer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque

 

select * from 

por

 

select r.* from

 

@braços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.