Ir para conteúdo

POWERED BY:

Arquivado

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

Flávio Sampaio

Pesquisa em duas tabelas

Recommended Posts

Olá, bom dia!

Estou usando PHP mas acho que até poderia ser enviado para SQL, mas vamos la.

 

Tenho duas tabelas, onde uma ficam os dados de quando é feita uma pesquisa e na outra fica o ramal, criei um while que lista depois da query onde é feita pesquisa por data inicial e final, isso funciona perfeitamente, porém não consigo listar ou exibir por apenas um ramal.

 

A tabela inicial onde é feita a query tem um campo que é igual na tabela onde tem o campo ramal, que se chama id, nestas são iguais mas não tem mais nada cruzado, pesquisei na internet e não achei nada que resolvesse, como inner join, select dentro de select etc.

 

O código é:

 

"SELECT * FROM pesquisa WHERE nota <> '' AND data_queue >= '$inicio' AND data_queue <= '$fim' "

 

sendo que a query precisa ser feita em outra tabela:

 

SELECT * FROM pesquisa_atendimento WHERE ramal = 200

 

Alguém tem uma idéia?

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

,

 

Como faria isso?

O AND já usei, mas como criaria variáveis neste caso?

Me exemplifique, o que deseja de saída da busca, e como estão esses dados nas tabelas em si, não se prenda a query,

 

Exemplo:

 

João, 16, masculino, nome_estado (isso é um dado de outra tabela) ,

Compartilhar este post


Link para o post
Compartilhar em outros sites

,

 

Me exemplifique, o que deseja de saída da busca, e como estão esses dados nas tabelas em si, não se prenda a query,

 

Exemplo:

 

João, 16, masculino, nome_estado (isso é um dado de outra tabela) ,

 

Se entendi bem, você quer o que está em uma tabela, mas não está na outra:

SELECT * FROM tabela1 t1 JOIN tabela2 t2 ON t2.campo_fk=t1.campo_pk WHERE t2.id IS NULL

De uma olhada nessa imagens, e veja se serve para o que você deseja:

http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg

 

Já tinha visto esta imagem, aliás achei bem legal o site do sqlfromhell.

 

Não deu certo assim, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que fica mais fácil exibir parte do código:

 

$query = pg_query("SELECT * FROM pesquisa WHERE nota <> '' AND data_queue >= '$inicio' AND data_queue <= '$fim' ") or die(mysql_error()); // este está funcionando perfeitamente
while($array = pg_fetch_array($query))
{
$uniqueid = $array['uniqueid'];
$queryA = pg_query("SELECT * FROM pesquisa_atendimento WHERE uniqueid = $uniqueid") or die(pg_error());
$arrayA = pg_fetch_array($queryA);
$ramal = $arrayA['ramal'];
Eu preciso que na $query exiba apenas dados do ramal 200 por exemplo, neste caso o ramal 200 estaria na tabela pesquisa_atendimento que tem um campo uniqueid em comum com a tabela pesquisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites
pesquisa

uniqueid character(20) NOT NULL

cliente numeric

data_queue timestamp without time zone

queue character(20)

data_pesquisa timestamp without time zone

atendido character(1)

nota character(1)

file character(80)


pesquisa_atendimento

uniqueid character(20) NOT NULL

data_atendido timestamp without time zone

ramal numeric

Compartilhar este post


Link para o post
Compartilhar em outros sites

ver se com essa query funciona ::

"SELECT pesquisa.*, pesquisa_atendimento.ramal as ramal FROM pesquisa, pesquisa_atendimento WHERE nota <> '' AND data_queue >= '$inicio' AND data_queue <= '$fim' and pesquisa.uniqueid  = pesquisa_atendimento.uniqueid "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago muito grato por estar auxiliando, a pesquisa não respondeu erros, ainda listou tudo mas ainda não tem o que eu preciso que é listar apenas de um ramal, eu preciso lista de apenas um ramal, o que referencia é que cada vez que o banco grava os dados, é feito gravação de dados nas duas tabelas, pesquisa e pesquisa_atendimento, sendo que grava uniqueid diferente em cada gravação, mas iguais nas duas tabelas, precisava listar apenas por ramal, isso que não estou conseguindo, existe a possibilidade de nesta mesma query eu pesquisar por ramal?

 

OBS: acho que resolvi aqui, seguindo lógico a sua query, apenas coloquei:

 

"SELECT pesquisa.*, pesquisa_atendimento.ramal as ramal FROM pesquisa, pesquisa_atendimento WHERE nota <> '' AND data_queue >= '$inicio' AND data_queue <= '$fim' and pesquisa.uniqueid = pesquisa_atendimento.uniqueid " and pesquisa_atendimento.ramal = 200

 

Isso permitiu listar apenas pelo ramal.

 

Vou testar mais um pouco e concluo aqui, obrigado pela ajuda a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De outra forma:

SELECT p.*, pa.ramal
FROM pesquisa p
JOIN pesquisa_atendimento pa ON pa.uniqueid=p.uniqueid
WHERE nota != '' AND data_queue BETWEEN '{$inicio}' AND '{$fim}' AND pa.ramal = 200

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.