2012-11-09 95 views
1

我有三个表pedidos和pro_pedidos和标志。 我想从pedidos获取数据,其中numero.pedidos = nuumero.prod_pedidos。并从标志我只想列数据。这个查询没有任何错误,但没有显示,但我有数据在表中后面?从三个表中检索数据

SELECT a.id, a.numero, a.nome, a.codigo, a.fantasia, a.cnpj, a.endereco, 
a.telefone, a.uf, a.cidade, a.cep, a.bairro, a.casa_numero, a.complemento, 
a.celular, a.ped,a.ped_numero, a.emissao, a.entraga, a.vendedor, a.prazo, 
a.transportador, a.total, a.obs, a.ativo, 
b.codigo AS Codigo, b.prod, b.preco, b.qtd, b.und, 
b.total AS Total,b.subtotal, b.numero AS Numero, 
c.nome AS emp_nome, c.telefone AS emp_tel, 
c.celular AS emp_cel, c.fax AS emp_fax, 
c.endereco AS emp_end, c.web AS emp_web, 
c.email AS emp_email 
FROM pedidos a INNER JOIN 
prod_pedidos b ON a.numero = b.numero, logos c 
WHERE  (a.numero = @numero) 
+0

你可以发布一些示例数据?有可能您的连接密钥包含不同的值,因此不匹配 – amphibient

+0

表格徽标如何与其他两个连接? – ElenaDBA

回答

3

首先:http://dev.mysql.com/doc/refman/5.0/en/join.html

INNER JOIN和,(逗号)在语义上是等效在没有 连接条件:既产生 指定的表之间的笛卡尔乘积(即,第一个表中的每一行都是 连接到第二个表中的每一行)。

但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT JOIN等。如果在存在连接条件时将逗号连接与 混合在其他连接类型中,则可能会发生 形式的错误,该形式为'on子句'中的未知列'col_name'。有关处理这个问题的信息 在本节后面给出。

结论:使用您的标志表,而不是逗号内部连接,并添加一个条件加入,因为你是在那一刻做一个笛卡尔乘积。


然而,由于你没有任何结果,这也意味着,有一个为

(a.numero = @numero) 

结论没有有效的结果集:,因为你说你有表中DATAS:

  • 检查是否有实际的a.numero对应于@numero
  • 检查你传递正确的参数,以@numero
  • 检查你的参数@numero实现的a.numero

希望它有助于预期的格式,

S.

+0

是的,我已经通过正确的号码,然后在此查询工作之前,但添加第三个表'标志'没有错误没有检索数据后 – Saqi

+0

你确定你的表“标志”中有一行吗? – Sebas

+0

YES在LOGOS TABLE HAVE LINE – Saqi

0

问题可能是加入类型 - INNER JOIN返回a和b表中的数据。如果数据仅在a中,或者在b中ony,那么它将不会返回。使用LEFT或RIGHT加入。

你也需要以某种方式链接到表Ç - 标志

SELECT a.id, a.numero, a.nome, a.codigo, a.fantasia, a.cnpj, a.endereco, 
a.telefone, a.uf, a.cidade, a.cep, a.bairro, a.casa_numero, a.complemento, 
a.celular, a.ped,a.ped_numero, a.emissao, a.entraga, a.vendedor, a.prazo, 
a.transportador, a.total, a.obs, a.ativo, 
b.codigo AS Codigo, b.prod, b.preco, b.qtd, b.und, 
b.total AS Total,b.subtotal, b.numero AS Numero, 
c.nome AS emp_nome, c.telefone AS emp_tel, 
c.celular AS emp_cel, c.fax AS emp_fax, 
c.endereco AS emp_end, c.web AS emp_web, 
c.email AS emp_email 
FROM pedidos a LEFT JOIN 
prod_pedidos b ON a.numero = b.numero 
LEFT JOIN logos c ON a.nome=c.nome 
WHERE  (a.numero = @numero)