愚蠢的問題時間。 Oracle 10g。影響加入的條款
where子句可能影響連接嗎?
我有以下形式的查詢:
select * from
(select product, product_name from products p
join product_serial ps on product.id = ps.id
join product_data pd on pd.product_value = to_number(p.product_value)) product_result
where product_name like '%prototype%';
顯然,這是一個人爲的例子。沒有真正的需要顯示錶格結構,因爲它都是虛構的。不幸的是,我無法顯示真正的表格結構或查詢。在這種情況下,p.product_value是一個VARCHAR2字段,它在某些行中有一個存儲在其中的ID而不是文本。 (是的,糟糕的設計 - 但我繼承和無法改變的東西)
問題出在連接。如果我省略where子句,則查詢起作用並返回行。但是,如果添加where子句,則會在pd.product_value = to_number(p.product_value)連接條件中收到「無效編號」錯誤。
很顯然,當在p.product_value字段中包含非數字的行連接時,會發生「無效數字」錯誤。但是,我的問題是如何選擇這些行?如果連接成功,而沒有外部where子句,那麼不應該在外部where子句中只選擇連接結果中的行?看起來發生了什麼是where子句正在影響哪些行被連接,儘管連接處於內部查詢中。
我的問題有意義嗎?
你可以給它一點點'to_char(pd.product_value)= p.product_value'。 – briantyler 2012-04-10 15:27:34