2012-07-09 113 views
0

我有以下查询来拉动属性。属性有多个单位。我不知道如何使用至少1个单位的属性。单位通过拥有相同的“团队”连接到属性。 “团队”是一个varchar(例如“jkdgsl”)。有什么建议么?mysql内部连接计数查询

SELECT DISTINCT Properties.id, Properties.title, Properties.team 
FROM Properties 
INNER JOIN Units ON Units.team = Properties.team 
AND Units.rates != '0' 
AND Properties.deleted = '0000-00-00 00:00:00' 
AND Properties.zip_code 
IN (
'77808', '77845' 
) 
AND Properties.public = '1' 
ORDER BY FIELD(Properties.zip_code, '77808', '77845') 
LIMIT 0 , 30 
+1

在我看来,你的查询已经工作,并拉你需要的属性,因为properties'和'units'基本上将排除所有属性之间的''INNER JOIN'不具有在'对应的行单位“,从而拉动至少1个单位的属性。但是,如果你只想拉动2个或更多单位的属性,那么这是一个不同的故事,你可能需要在GROUP BY和HAVING中进行选择。 – 2012-07-09 19:30:59

回答

0

我认为你已经在做这个(即选择至少具有一个单元的属性)。

+0

这是一个答案或评论? – 2012-07-09 19:25:15

+0

@FranciscoSpaeth:男人,你对这个观察都很疯狂。这显然是答案,因为它出现在答案部分。如果你问我是否应该是评论或答案,我的逻辑告诉我应该是一个答案,因为它回答了他的问题 – Razvan 2012-07-09 19:27:14

0

我@Razvan 同意如果你也想为单位计数,使用:

SELECT DISTINCT Properties.id, Properties.title, Properties.team, COUNT(Units.<em>someOTHERcolumn</em>) 
FROM Properties 
INNER JOIN Units ON Units.team = Properties.team 
AND Units.rates != '0' 
AND Properties.deleted = '0000-00-00 00:00:00' 
AND Properties.zip_code 
IN (
'77808', '77845' 
) 
AND Properties.public = '1' 
GROUP BY Properties.id ORDER BY FIELD(Properties.zip_code, '77808', '77845') 
LIMIT 0 , 30 

0

如果它只是一个或多个,你可以使用COALESCE

WHERE COALESCE(Properties.id, Properties.title, Properties.team) IS NOT NULL