我有一个相当简单的SQL问题。我有一个查询从多个表中提取数据。刚收到一个新请求加入另一个表。这里创建了一个简化版http://sqlfiddle.com/#!6/f9698/4
我想要左侧(is.odd <- function(x) x %% 2 == 1
apply(new, 1, function(x) {
toremove <-which(is.na(x))
toremove1<-sapply(toremove,function(x) ifelse(is.odd(x),x+1,x-1) )
ref[,!(1:ncol(ref) %in% c(toremove,toremove1)),drop=F]
})
)表中的所有记录。每个Prod1
ProdAttr
表上会有多个条目。但是我想在以下查询中仅提取条件符合的那些。我不确定我是否应该使用加入或联盟!请指教。
ProdID
感谢。
答案 0 :(得分:1)
当left join
失败时,ProdAttr
表格中的列会被null
填充。在这些情况下,您where
会过滤掉行,因为null
既不是4也不是68:
where AttrID= 4 and AttrVal=68;
将条件移至on
子句,如:
select P1.*, PA.AttrDesc from prod1 P1
left join ProdAttr PA
on P1.ProdID = PA.ProdID
and AttrID= 4 and AttrVal=68;
现在条件仅用于查找ProdAttr
中的行,而不是prod1
和ProdAttr
之间的联接结果的过滤器。