Sql server 数据布局?谢谢:)没有回答,因为你不是第一个。但我确实给了你们应得的一票:)你们明白这是一个糟糕的解决方案,对吧?如果使用左连接,则可以通过在where子句中放置对该表的引用来完全否定它,除非您请求id为null的实例(这会在第一个表而不是第二个表中提供记
Sql server 数据布局?谢谢:)没有回答,因为你不是第一个。但我确实给了你们应得的一票:)你们明白这是一个糟糕的解决方案,对吧?如果使用左连接,则可以通过在where子句中放置对该表的引用来完全否定它,除非您请求id为null的实例(这会在第一个表而不是第二个表中提供记,sql-server,tsql,Sql Server,Tsql,数据布局?谢谢:)没有回答,因为你不是第一个。但我确实给了你们应得的一票:)你们明白这是一个糟糕的解决方案,对吧?如果使用左连接,则可以通过在where子句中放置对该表的引用来完全否定它,除非您请求id为null的实例(这会在第一个表而不是第二个表中提供记录)。因此,内部联接不仅更简单,而且性能更好。还有,你真的有租客居住在不止一处房产吗?如果不是的话,你也不需要浪费时间在一个不同的问题上。@Malfist:我今天已经达到了200个代表的上限,追加投票不再算数了。;-)但是为什么租户表引用属性表
数据布局?谢谢:)没有回答,因为你不是第一个。但我确实给了你们应得的一票:)你们明白这是一个糟糕的解决方案,对吧?如果使用左连接,则可以通过在where子句中放置对该表的引用来完全否定它,除非您请求id为null的实例(这会在第一个表而不是第二个表中提供记录)。因此,内部联接不仅更简单,而且性能更好。还有,你真的有租客居住在不止一处房产吗?如果不是的话,你也不需要浪费时间在一个不同的问题上。@Malfist:我今天已经达到了200个代表的上限,追加投票不再算数了。;-)但是为什么租户表引用属性表呢?对我来说,这似乎是一个标准化错误……是的,我现在正在和我的老板讨论这个问题。这对我来说毫无意义。还有一些类似的事情。这个项目是外包给海外的,当他们做不到的时候,我就把它带回来了,所以我不得不接受。关于这件事,有很多…奇怪的事情。没有评论。
SELECT
COUNT(tblProperty.ID) AS count
FROM
tblTenant AS tblTenant
INNER JOIN tblRentalUnit
ON tblTenant.UnitID = tblRentalUnit.ID
INNER JOIN tblProperty
ON tblTenant.PropertyID = tblProperty.ID
AND tblRentalUnit.PropertyID = tblProperty.ID
WHERE tblProperty.ID = x
Database Structure:
tblTenant:
ID
PropertyID <--foreign key to tblProperty
UnitID <--foreign key to tblRentalUnit
Other Data
tblProperty:
ID
Other Data
tblRentalUnit:
ID
PropertyID <--foreign key to tblProperty
Other Data
SELECT
tblProperty.ID
FROM
tblTenant AS tblTenant
INNER JOIN tblRentalUnit AS tblRentalUnit
ON tblTenant.UnitID = tblRentalUnit.ID
INNER JOIN tblProperty AS tblProperty
ON tblTenant.PropertyID = tblProperty.ID
AND tblRentalUnit.PropertyID = tblProperty.ID
GROUP BY tblProperty.ID
HAVING COUNT(tblProperty.ID) > 1
HAVING COUNT(tblProperty.ID) > 1
SELECT
p.ID
FROM
tblProperty AS p
INNER JOIN tblRentalUnit AS u ON u.PropertyID = p.ID
INNER JOIN tblTenant AS t ON t.UnitID = u.ID
GROUP BY
p.ID
SELECT DISTINCT
p.ID
FROM tblProperty AS p LEFT OUTER JOIN
tblTenant AS t ON t.PropertyID = p.ID
WHERE (t.UnitID IS NOT NULL)