[英]inner and outer join together in query, possible
我试图在单个查询中实现内部和外部联接,我不确定我是在做对还是错,因为我对查询不是很好。
所以就到这里。
我有这些下表。
hrs_residentials
hrs_residential_utilities
hrs_utilities
hrs_utility_type
hrs_residentials :
ResID, ResType, ResNo - - -
1 2 001 - - -
hrs_residential_utilities :
RUID, UtilityID, ResID, - - - -
NULL NULL NULL
hrs_utilities :
UtilityID, UtilityTypeID, Number, ConsumerNumber, -, -, -
NULL NULL NULL NULL
hrs_utility_type :
UTID, UName, UDescription
1 PESCO PESCO Electric Meter
2 SNGPL Sui Northen Gas Pipe Lines
所以我想在数据表中显示数据,但是我想要的数据应该在hrs_residentials表的表中显示,如果hrs_residential_utilities是否具有数据,这很重要。 所以我去了左外部联接,我得到了想要的结果。
但是之后,当我尝试使用hrs_utilities
为hrs_residential_utilities
进行hrs_utilities
,我也停止获取hrs_residentials
结果。 好像我们看到hrs_residential
在表中有数据。 我不想与hrs_residentials
内部hrs_residentials
,我希望在hrs_residential_utilities
和hrs_utilities
之间进行内部hrs_utilities
。
有可能吗,或者我在这里采用了错误的方法? 对不起,我不好。 如果有人可以帮助我,正确查询该怎么办?
这是我到目前为止尝试过的查询。
SELECT R.`ResID`,R.`ResNo`
FROM `hrs_residentials` R
LEFT OUTER JOIN `hrs_residential_utilities` RU
ON R.`ResID` = RU.ResID
INNER JOIN `hrs_utilities` U
ON RU.`UtilityID` = U.`UtilityID`
WHERE 1=1;
在内部联接之后,我停止从hrs_residential
s表获取结果,但是我正在其他两个表之间进行内部联接。
尝试这样的子查询:
SELECT *
FROM `hrs_residentials` R
LEFT OUTER JOIN
(
SELECT * FROM
`hrs_residential_utilities` RU
INNER JOIN `hrs_utilities` U
ON RU.`UtilityID` = U.`UtilityID`
) AS subqyr
ON R.`ResID` = subqyr.`ResID`
运行此查询并查看结果
选择ResID
,R。 ResNo
FROM hrs_residentials
R左外连接hrs_residential_utilities
RU ON ResID
= RU.ResID
然后运行此查询并查看结果:
SELECT * FROM hrs_utilities
我怀疑您会发现RU.utilities ID与hrs_utilities中的任何内容都不匹配。
您的查询本身应返回hrs_residentials中的所有内容,并加入来自hrs_residential_utilities的任何匹配数据,这可能会也可能不会将RU.ResID返回为null(取决于是否可以匹配)。
然后,它过滤RU.UtilityId是否与hrs_utilities表中的任何内容匹配,而在空项目上则不匹配。
谢谢。 奥利弗
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.