Sql 可选where子句
我有两张桌子 表A-产品信息-颜色、尺寸等(产品id、颜色、尺寸…) 表B-费率信息-费率可能因颜色、大小、状态等而异。。。 (费率id、产品id、颜色、尺寸、状态、费率) 并非所有产品的价格都会因颜色、尺寸、状态等的不同而变化。这会因产品而异 如果是这种情况,则只有比率变化的属性在比率表中才有值 e、 g.如果产品X速率不因大小或状态而变化,而是因颜色而变化,则速率表中的条目将具有不同的颜色值,但大小、状态字段将为空 SQL中是否有方法为产品获取正确的速率值 -我无法匹配所有产品属性,因为可能没有匹配的行Sql 可选where子句,sql,sql-server,Sql,Sql Server,我有两张桌子 表A-产品信息-颜色、尺寸等(产品id、颜色、尺寸…) 表B-费率信息-费率可能因颜色、大小、状态等而异。。。 (费率id、产品id、颜色、尺寸、状态、费率) 并非所有产品的价格都会因颜色、尺寸、状态等的不同而变化。这会因产品而异 如果是这种情况,则只有比率变化的属性在比率表中才有值 e、 g.如果产品X速率不因大小或状态而变化,而是因颜色而变化,则速率表中的条目将具有不同的颜色值,但大小、状态字段将为空 SQL中是否有方法为产品获取正确的速率值 -我无法匹配所有产品属性,因为可能
我想要的是一个查询,它获取与产品X关联的速率,并将用于其他产品,这些产品的速率可能因不同的属性集而异 这就是我将如何实现它的方法 这是一个很好的解释
菲尔这就是我将如何实现它的方法 这是一个很好的解释
Phil你想知道的关于主题的一切,还有更多:。你想知道的关于主题的一切,还有更多:。你可以用静态SQL做这件事,技巧是
ISNULL(product.color,'n/a')=ISNULL(rate.color,ISNULL(product.color,'n/a'))
您可以使用静态SQL来实现这一点,方法是ISNULL(product.color,'n/a')=ISNULL(rate.color,ISNULL(product.color,'n/a'))
您尝试过外部联接吗
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子句。是否尝试了外部联接
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 = ?
Edit:省略WHERE子句。我认为,您最好简化模式。表A不应包含颜色或尺寸信息。对于给定的产品id,表B应始终包含一行或多行。表之间始终进行内部联接。不需要条件。同意模式肯定是“关闭”的。如果行数很小,并且表不是到处都可以使用,那么修复表结构是必须的。我认为,您最好让模式更简单。表A不应包含颜色或尺寸信息。对于给定的产品id,表B应始终包含一行或多行。表之间始终进行内部联接。不需要条件。同意模式肯定是“关闭”的。如果行数很小,并且表不是到处都使用,那么必须修复表结构。