1

私は3つのテーブルpedidosとpro_pedidosとロゴを持っています。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と、(コンマ)は、結合条件がない場合は意味的に同等です。どちらも、指定されたテーブル間でデカルト積を生成します(つまり、最初のテーブルのすべての行が2番目のテーブルのすべての行に結合されます)。

ただし、コンマ演算子の優先順位は、INNER JOIN、CROSS JOIN、LEFTJOINなどよりも低くなります。結合条件があるときに他の結合タイプとコンマ結合を混在させると、「on句」の「不明な列」の形式のエラーが発生する可能性があります。この問題への対処に関する情報は、このセクションの後半に記載されています。

結論:ロゴテーブルでコンマの代わりに内部結合を使用し、現在デカルト積を実行しているため、結合の条件を追加します。


ただし、結果がないため、有効な結果セットがないことも意味します。

(a.numero = @numero)

結論:テーブルにデータがあると言ったので:

  • a.numeroに対応する実際のものがあることを確認してください@numero
  • に正しいパラメータを渡したことを確認してください@numero
  • @numeroパラメータが期待される形式を実装していることを確認してくださいa.numero

お役に立てば幸いです。

S。

于 2012-11-09T18:50:15.810 に答える
0

問題は結合タイプである可能性があります-INNERJOINは、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 に答える