1

我有三张桌子 pedidos 和 pro_pedidos 和 logos。我正在尝试从 numero.pedidos=nuumero.prod_pedidos 的 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)
4

2 回答 2

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)

结论:因为您说表中有数据:

  • 检查是否有实际a.numero对应@numero
  • 检查您是否将正确的参数传递给@numero
  • 检查您的参数是否@numero实现了预期的格式a.numero

希望有帮助,

S。

于 2012-11-09T18:50:15.810 回答
0

问题可能是连接类型 - INNER JOIN 返回 a 和 b 表中的数据。如果数据仅在 a 中,或仅在 b 中,则不会返回。使用 LEFT 或 RIGHT 连接。

您还需要以某种方式链接到表 c - 徽标

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)
于 2012-11-09T18:54:41.967 回答