Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Listagem em duas tabelas com itens distintos

20-05-2013 17:02

Quando eu listo :
$result = mysql_query("SELECT local.sap_loc, local.depos_loc, local.quantdepos_loc, local.data_loc, loja.sap_loj, loja.loja_loj, loja.quan_loj, loja.venc_loj  FROM local INNER JOIN loja ON loja.sap_loj = local.sap_loc ORDER BY local.data_loc ASC") or die(mysql_error());

me diz que :
local.sap_loc = 001 - 001
local.depos_loc = AB1 - AB1
local.quantdepos_loc = 1062 - 1062
local.data_loc = 01/02/2015 - 01/02/2014
loja.sap_loj = 001 - 001
loja.loja_loj = CC2 - CC2
loja.quan_loj = 65 - 18
loja.venc_loj = 01/02/2015 - 01/02/2014

O mesmo material em 2 locais diferentes , com datas diferentes, e quantidades diferentes .
O certo seria :
local.sap_loc = 001 - 001
local.depos_loc = ( nada aqui ) - AB1
local.quantdepos_loc = ( nada aqui ) - 1062
local.data_loc = 01/02/2015 - 01/02/2014
loja.sap_loj = 001 - 001
loja.loja_loj = CC2 - CC2
loja.quan_loj = 65 - 18
loja.venc_loj = 01/02/2015 - 01/02/2014

esta repetindo o valor local.depos_loc e local.quantdepos_loc , como proceder ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17584
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listagem em duas tabelas com itens distintos

20-05-2013 17:22

Nunca vi esse problema, mas vou indicar o que pode resolver. Use LEFT JOIN e "ou" WHERE para definir a ligação entre as duas tabelas.

Fiz um teste aqui em 2 tabelas

SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.coluna = tab2.id

A tabela que testei tem 2 registros, tipo:

TAB1
id - nome - idade
1 | pedro | 20
2 | maria | 21

TAB2
id - peso - altura
1 | 50 | 1.60
2 | 51 | 1.80

Na consulta, é puxado

$id - $nome - $idade - $peso - $altura

RESULTADO

1 | pedro | 20 | vazio | vazio
2 | vazio | vazio | 51 | 1.80

Ou seja, só vai mostrar os resultados que tiver em ambas as tabelas.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 11:08

Perdão web , não entendi seu exemplo, montei aqui a tabela conforme vc passou:
TAB1
id - nome - idade
1 | pedro | 20
2 | maria | 21

TAB2
id - peso - altura
1 | 50 | 1.60
2 | 51 | 1.80

Fiz o Select:
SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.coluna = tab2.id
Só que no lugar de coluna coloquei id, e me retornou com nada em vazio:
1 | pedro | 20 | 50 | 1.60
2 | maria | 21 | 51 | 1.80
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17584
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 12:26

Realmente, esqueci o id. Mas o id tem que aparecer em ambas linhas, até porque o script só consulta se tab1.coluna for igual a tab2.coluna.

O script está certo. Veja se tem realmente os ids iguais em ambas tabelas.

Já a sua dúvida inicial, você tem que ver o que quer retornar, por exemplo, você tem

loja.sap_loj = local.sap_loc

Você falou que tem o mesmo produto em 2 lugares diferentes, com data e quantidade diferente.

Entendi que você quer listar dados de ambas tabelas junto, tipo

tabela1.preco - tabela2.preco
tabela.quantidade - tabela2.quantidade

Se for isso acho que será necessário outra query. Se possível, faz um sql com sua tabela e alguns dados cadastrados, para que eu possa testar.

Antes, usa o AS, para definir a variável de qual tabela vem, por exemplo:

SELECT local.sap_loc AS LocalSapLoc, local.depos_loc AS LocalDeposLoc....

Ai você usa essas variáveis para definir de onde está vindo o valor para o WHILE
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 12:40

Pois é , essa parte eu fiz separada mesmo, complica menos ..... mas o fato de estar com esta situação da data diferente para o mesmo produto, esta me dando nos nervos , pois , tenho a seguinte situação :

id_loj | sap_loj | loja_loj | quan_loj | venc_loj
6 | 146126 | AC3 | 5 | 2013-05-25
2 | 546126 | AC1 | 32 | 2014-02-01
10 | 546126 | AC1 | -2 | 2013-05-31
7 | 146126 | AC3 | 33 | 2013-05-30

Onde venc_loj é a data de vencimento do produto, quando efetuo uma venda, dispara o trigger , exemplo , se eu vender 3 produtos 546126 , ele ta dando baixa nos dois itens , pois tenho o mesmo produto cadastrado 1, 2 ou mais vezes. segue um exemplo da trigger :
DELIMITER $$  CREATE TRIGGER 'Tgr_ItensVenda_Insert' AFTER INSERT ON 'novodia'  FOR EACH ROW BEGIN  UPDATE loja SET quan_loj = quan_loj - NEW.sa_ndia WHERE sap_loj = NEW.prod_ndia ORDER BY venc_loj ASC;  END$$  DELIMITER ; 



como fazer para resolver ?
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 19:08

Voltando a situação do select, eu não to conseguindo enxergar um modo de fazer q não seja separada .... segue o q pediu.
CREATE TABLE IF NOT EXISTS 'local' (   'id_loc' INT(10) NOT NULL AUTO_INCREMENT,   'sap_loc' INT(10) DEFAULT NULL,   'depos_loc' VARCHAR(10) COLLATE latin1_general_ci DEFAULT NULL,   'quantdepos_loc' INT(10) DEFAULT NULL,   'data_loc' DATE NOT NULL DEFAULT '0000-00-00',   PRIMARY KEY ('id_loc') ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5 ;   -- -- Extraindo dados da tabela 'local' --   INSERT INTO 'local' ('id_loc', 'sap_loc', 'depos_loc', 'quantdepos_loc', 'data_loc') VALUES (1, 146126, 'LC5', 2, '2014-02-01'), (2, 546126, 'DB1', 59, '2015-02-01'), (3, 546126, 'DB1', 5, '2013-05-31'), (4, 546126, 'DB1', 10, '2013-05-23');   -- --------------------------------------------------------   -- -- Estrutura da tabela 'loja' --   CREATE TABLE IF NOT EXISTS 'loja' (   'id_loj' INT(10) NOT NULL AUTO_INCREMENT,   'sap_loj' INT(10) DEFAULT NULL,   'loja_loj' VARCHAR(10) DEFAULT NULL,   'quan_loj' INT(10) DEFAULT NULL,   'venc_loj' DATE NOT NULL DEFAULT '0000-00-00',   PRIMARY KEY ('id_loj') ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;   -- -- Extraindo dados da tabela 'loja' --   INSERT INTO 'loja' ('id_loj', 'sap_loj', 'loja_loj', 'quan_loj', 'venc_loj') VALUES (6, 146126, 'AC1', 1, '2013-05-25'), (2, 546126, 'AC11', 26, '2014-02-01'), (10, 546126, 'AC11', 12, '2013-05-31'), (7, 146126, 'AC1', 31, '2013-05-30');   SELECT id_loc, sap_loc, depos_loc, quantdepos_loc, data_loc FROM LOCAL;   SELECT id_loj, sap_loj, loja_loj, quan_loj, venc_loj FROM loja; 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17584
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 20:57

Eu dei uma testada no código aqui, e pelo método que quer fazer, com uma consulta só eu não sei como fazer.

Veja pela lógica:

local.depos_loc na tabela local, existe, mas na tabela loja não existe essa coluna.

Outro detalhe, é que existe vários produtos com o mesmo identificador: sap_loc e sap_loja

Ou seja, a relação entre as duas tabelas está meio confusa no meu ponto de vista.

O que acho mais próximo possível fazer, é você fazer uma consulta de uma das tabelas, e listar abaixo de cada linha dessa primeira tabela, os resultados vindo da segunda.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 21:14

Eu fiz ela paralela e separada, ficou praticamente a mesma coisa ... funciona 100% para o que eu preciso.

Quanto ao trigger vou colocar post diferente .... vlw
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17584
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listagem em duas tabelas com itens distintos

21-05-2013 21:29

Boa. Não conheço nada sobre TRIGGER, mas talvez alguém conheça.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado