2012-11-09 143 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)