Select 1 Tabela Principal E 2 Tabelas Filhas
#1
Posted 14/09/2004, 07:57
Preciso selecionar 1 tabela e 2 sub-tabelas.
A tabela principal chama-se pedidos, a 1ª sub-tabela chama-se pedidos_srbitrem (srbitrem é um modelo de implemento rodoviario) a 2ª é pedidos_sr(sr também é).
A tabela pedidos contém o principal de um pedido, as outras 2 sub-tabelas contém detalhes específicos dos 2 tipos de pedido.
Quando seleciono a tabela principal e UMA sub-tabela dá tudo certinho:
"SELECT *FROM pedidos, implementos, clientes, representantes,
WHERE implementos.id_imp=pedidos.id_imp AND clientes.id_cliente=pedidos.id_cliente AND representantes.id_rep=clientes.id_rep
AND pedidos.prev_dataentrega BETWEEN '$data1' AND '$data2'"
Agora quando eu seleciono as DUAS sub-tabelas, ele não mostra nada, não funciona:
"SELECT *FROM pedidos, implementos, clientes, representantes, pedidos_sr, pedidos_srbitrem
WHERE implementos.id_imp=pedidos.id_imp AND clientes.id_cliente=pedidos.id_cliente AND representantes.id_rep=clientes.id_rep
AND pedidos_sr.id_ped=pedidos.id_ped AND pedidos_srbitrem.id_ped=pedidos.id_ped AND pedidos.prev_dataentrega BETWEEN '$data1' AND '$data2'"
Alguem me dá uma luz?
Obrigado!
#2
Posted 14/09/2004, 08:30
sabe o que vc pode fazer pra debugar? de um echo na query que o mysql vai executar, aih veja o que ele esta executando e compare manualmente a clausula where... aih vc vai ver exatamente onde ela está "negando" o que não deve
๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑
#3
Posted 14/09/2004, 08:39
#4
Posted 14/09/2004, 08:43
pois eh... faça o teste de debug que eu indiquei pra vc VER onde esta o erro...o engraçado que é q se eu deixo somente uma tabela filha, tiro uma do select ele funciona na boa. Agora com as duas não rola.
ex.:
$tmpQuery = "SELECT *FROM pedidos, implementos, clientes, representantes, WHERE implementos.id_imp=pedidos.id_imp AND clientes.id_cliente=pedidos.id_cliente AND representantes.id_rep=clientes.id_rep AND pedidos.prev_dataentrega BETWEEN '$data1' AND '$data2'"; echo $tmpQuery; mysql_query($tmpQuery);
esse echo vai te colocar no output exatamente a query executada no mysql, e vc vai poder analizar qual das clausulas where esta te dando problema
๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑
#5
Posted 14/09/2004, 09:30
Pelo menos foi isso que me disseram em outro fórum;
A estrutura das minhas tabelas são basicamente assim:
pedidos //tabela principal
id_ped //identificação do pedido
npedido //número do pedido
data_ped //data do pedido
pedidos_srbitrem //tabela filha
id_ped //id que é relacionado com o id_ped da tabela principal
assoalho //e demais detalhes do pedido
pedidos_sr
id_ped //também relaciona-se com a tabela principal
... e demais campos que são detalhes do pedido
Então na tabela principal existem todos os registros
1 2 3 4 5 6 7
Na tabela filha pedidos_srbitrem existem somente alguns
2 3 5 7
Na outra tabela filha pedidos_sr existem outros
1 2 4
Ouvi falar que existe uma palavra-chave no sql que faz que quando não haja relacionamento ele retorna um NULL no campo
por exemplo:
tabela clientes
cod nome cod_estado
1 Júnior NULL
2 Antonio 3
tabela estados
cod_estado nome_estado
1 Bahia
2 Ceará
A consulta "select * from clientes, estados where clientes.cod_estado = estados.cod_estado" não retorna registro nenhum.
Essa palavra chave faria retornar:
cod nome cod_estado nome_estado
1 Júnior NULL NULL
2 Antonio 3 NULL
#6
Posted 14/09/2004, 09:48
se estiver via php,faz assim:
mysql_query("SELECT *FROM pedidos, implementos, clientes, representantes, WHERE implementos.id_imp=pedidos.id_imp AND clientes.id_cliente=pedidos.id_cliente AND representantes.id_rep=clientes.id_rep AND pedidos.prev_dataentrega BETWEEN '$data1' AND '$data2'") or die(mysql_error());
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de Deus e vai.."
#7
Posted 14/09/2004, 09:58
mysql_query("SELECT *FROM pedidos, implementos, clientes, representantes, pedidos_srbitrem, pedidos_sr
WHERE implementos.id_imp=pedidos.id_imp AND clientes.id_cliente=pedidos.id_cliente AND representantes.id_rep=clientes.id_rep
AND pedidos_srbitrem.id_ped=pedidos.id_ped AND pedidos_sr.id_ped=.id_ped
AND pedidos.prev_dataentrega BETWEEN '$data1' AND '$data2'") or die(mysql_error());
agora isso também naum retorna nenhum erro, e também nenhum resultado ehehhe
#8
Posted 14/09/2004, 10:02
não é para ter virgula mesmo
mas ja deu certo ae??
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de Deus e vai.."
#9
Posted 14/09/2004, 10:05
mysql_query("SELECT *FROM pedidos, implementos, clientes, representantes, pedidos_srbitrem, pedidos_sr
WHERE implementos.id_imp=pedidos.id_imp AND clientes.id_cliente=pedidos.id_cliente AND representantes.id_rep=clientes.id_rep
AND pedidos_srbitrem.id_ped=pedidos.id_ped AND pedidos_sr.id_ped=.id_ped
AND pedidos.prev_dataentrega BETWEEN '$data1' AND '$data2'") or die(mysql_error());
#10
Posted 14/09/2004, 10:12
se sim,faz o seguinte:
manda a estrutura de sua tabela com alguns campos preenchidos!!
ae fica mais facil de testar
não iremos tentar descobrir o erro
Edição feita por: Marcão, 14/09/2004, 10:28.
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de Deus e vai.."
#11
Posted 14/09/2004, 14:06
to mandando listar na tela
mas naum aparece nada
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)