繁体   English   中英

内部和外部在查询中连接在一起,可能

[英]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_utilitieshrs_residential_utilities进行hrs_utilities ,我也停止获取hrs_residentials结果。 好像我们看到hrs_residential在表中有数据。 我不想与hrs_residentials内部hrs_residentials ,我希望在hrs_residential_utilitieshrs_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM