我有三张表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 :(得分:3)
首先:http://dev.mysql.com/doc/refman/5.0/en/join.html
INNER JOIN和(逗号)在没有的情况下在语义上是等价的 连接条件:两者之间产生笛卡尔积 指定的表(即第一个表中的每一行都是 加入第二个表格中的每一行。)
但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT JOIN等等。如果你混合使用逗号连接 当有连接条件时,其他连接类型,错误 form可能会出现'on子句'中的未知列'col_name'。信息 关于这个问题的处理将在本节后面给出。
结论:在徽标表上使用内部联接而不是逗号,并添加加入条件,因为您目前正在制作笛卡尔积。
但是,由于您没有任何结果,这也意味着
没有有效的结果集(a.numero = @numero)
结论:因为您说表中有数据:
a.numero
@numero
@numero
@numero
是否实现了a.numero
希望它有所帮助,
S上。
答案 1 :(得分:0)
问题可能是连接类型 - INNER JOIN返回a和b表中的数据。如果数据仅在a中,或者在b中,那么它将不会被返回。使用LEFT或RIGHT join。
你还需要以某种方式链接到表c - logos
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)