2013-12-23 58 views
0

我有兩個表,我想比較這兩個表中的兩列。表f_product中的列迴流必須大於等於表f_line中的列lreflow。我使用的編碼是兩個表之間的比較列(大於等於)

SELECT f_product.oiv,f_product.product,f_product.passive,f_product.pitch,f_product.reflow,f_line.lreflow,f_product.spi,f_product.scomp,f_product.pallet,f_product.printer,f_line.line 
FROM f_product,f_line 
WHERE f_product.passive=f_line.passive 
AND f_product.pitch=f_line.pitch 
AND f_product.spi=f_line.spi 
AND f_product.pallet=f_line.pallet 
AND f_product.printer=f_line.printer 
AND f_product.reflow >= f_line.lreflow 
AND oiv='PMLE4720A' . 

但是,結果顯示出並沒有f_product.reflow和f_line.lreflow之間比較出列數據。例如,結果仍列出reflow = 8和lreflow = 10的結果,其中reflow小於lreflow的值。 是我的SQL編碼有任何錯誤?

回答

0

我猜這是Oracle?有時它會被實際where子句和使用where的隱式連接之間的模糊性混淆。爲ANSI SQL連接我會重鑄它:

SELECT 
..... 
FROM 
f_product a INNER JOIN f_line b ON 
(a.passive = b.passive AND 
a.pitch =b.pitch AND 
a.spi=b.spi AND 
a.pallet=b.pallet) 
where oiv='PMLE4720A' 
and a.reflow >= b.lreflow 

假設產品和生產線之間的關係是這樣的,是有意義的JION在這四個領域...

+0

好...它仍然不工作上,結果顯示出來的結果仍然與我之前嘗試過的表格行迴流比表產品迴流會一起出來的結果相同。 – user3128278

+0

這很奇怪。你能從表格中發佈一些數據嗎? –

+0

f_product:oiv-varchar2(50)not null,product-varchar2(50),passive-varchar2(10),pitch-varchar2(10),reflow-varchar2(10),spi-varchar2(10)... f_line:line-varchar2(50)not null,passive-varchar2(10),pitch-varchar2(10),lreflow-varchar2(10)... 並且結果顯示爲: oiv reflow lreflow 3 8 7 – user3128278