2011-05-11 78 views
1

我有兩個表可選的where子句

表A - 產品信息 - 顏色,大小等等......(產品編號,顏色,尺寸......)

表B - 速率信息 - 速度可能會有所不同按顏色,大小,狀態等.. (rate_id,PRODUCT_ID,顏色,大小,狀態,速度)

並非所有產品都通過顏色,大小,狀態等變化率......這變化的產品

如果是這種情況,只有速率變化的屬性有av例如在費率表 例如如果產品X率不因尺寸或狀態而異,但因顏色而異,則會在費率表中輸入不同顏色值,但尺寸,狀態字段將爲空。

是否有SQL的方式,以獲得正確率值的產品 - 我不能匹配所有的產品屬性,因爲有可能不匹配行

我要的是一個查詢,獲取率與產品X相關聯,並將與其他產品一起使用,其費率可能因不同的屬性而異。

+0

我認爲,您最好儘可能簡化模式。表A不應包含顏色或尺寸信息。對於給定的product_id,表B應始終包含一行或多行。您始終在表格之間進行INNER連接。不需要條件。 – 2011-05-11 18:26:00

+0

同意該模式肯定是「關閉」。如果行數很少,並且表格不在任何地方使用,則必須修復表格結構。 – hythlodayr 2011-05-11 18:28:28

回答

0

您可以使用靜態SQL與竅門ISNULL(product.color, 'n/a') = ISNULL(rate.color, ISNULL(product.color, 'n/a'))做到這一點。

0

您是否嘗試過外連接?

SELECT 
    P.*, 
    R.* 
FROM 
    PRODUCT P LEFT OUTER JOIN RATE R 
    ON (P.product_ID = R.product_id AND (
     P.COLOR = R.COLOR 
    OR P.SIZE = R.SIZE 
    )) 
WHERE 
    P.product_id = ? 

編輯:遺漏了WHERE子句。