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

时间:2014-11-19 15:22:28

标签: mysql join inner-join outer-join

我正在尝试在单个查询中实现内部和外部联接,我不确定我是以正确的方式还是错误的方式,因为我对查询不是很好。

所以这就是它。

我有以下表格。

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_residential_utilitieshrs_utilities做内心时,我也停止了hrs_residentials的结果。好像我们看到hrs_residential确实有表格中的数据。我不希望与hrs_residentials进行内部联接,我想在hrs_residential_utilitieshrs_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表中获取结果在内部联接之后,但我正在其他两个表之间进行内部联接。

2 个答案:

答案 0 :(得分:0)

尝试这样的子查询:

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`

答案 1 :(得分:0)

运行此查询并查看结果

SELECT R。ResID,R。ResNo 来自hrs_residentials R LEFT OUTER JOIN hrs_residential_utilities RU ON R。ResID = RU.ResID

然后运行此查询并查看结果:

SELECT * FROM hrs_utilities 

我怀疑你会发现RU.utilities ID与hrs_utilities中的任何内容都不匹配。

您的查询本身应返回hrs_residentials中的所有内容并加入来自hrs_residential_utilities的任何匹配数据,这可能会也可能不会将RU.ResID返回为null,具体取决于它是否匹配。

然后过滤RU.UtilityId是否与hrs_utilities表中的任何内容匹配,这与null项不匹配。

感谢。 奥利弗