【问题标题】:Join query on tables对表进行联接查询
【发布时间】:2016-06-01 07:23:53
【问题描述】:

我在一个表上运行 2 个查询,它们在“Where”子句中是相同的,所以我相信它们应该返回相同的值。

我的第一个查询是:

select B.NameDastgahID, B.ZarfiateHamleBar, B.SherkateSazande, B.BisimHF, B.KanalBisimKhodroyi, B.ShomarePelak, B1.NameDastgahTitle, B2.NameKhodroTitle, B3.NoeKhodroTitle, B4.KarbarieKhodroTitle, B5.ShahreKhodroTitle, B6.cheraghgardanValue, B7.bisimHFTitle 
from dw.bohran_fct_etelaatenavegankhodroyi B
INNER JOIN dw.excel_dim_namedastgah B1 using (NameDastgahID) 
INNER JOIN dw.excel_dim_namekhodro B2 using (NameKhodroID) 
INNER JOIN dw.excel_dim_noekhodro B3 using (NoeNavganID) 
INNER JOIN dw.excel_dim_karbariekhodro B4 using (KarbariID) 
INNER JOIN dw.excel_dim_shahrekhodro B5 using (ShahrID)
INNER JOIN dw.excel_dim_cheraghgardan B6 using (CheraghGardan)
INNER JOIN dw.excel_dim_bisimhf B7 using (bisimHF)
where NameKhodroID = '630'

它返回 61 行。

第二个查询:

select *
from dw.bohran_fct_etelaatenavegankhodroyi 
where NameKhodroID = '630' 

这将返回 122 行。

第二个查询总是返回比第一个多双的行,即使我更改了条件。有什么想法吗??

【问题讨论】:

  • 在你的第二个查询中,你的表名是不是太长了?
  • 那个打错了,我改正了,还是一样的结果。
  • EAV 架构存在问题的另一个原因。

标签: mysql join indexing entity-attribute-value


【解决方案1】:

我建议一次删除一个JOIN,直到找到导致此问题的那个。

这并不奇怪,它的正常行为,您正在加入 7 个不同的表,如果所有这 7 个表的任何条件都不正确,那么记录将被过滤!

【讨论】:

  • 感谢您的评论,它很有用。我知道加入 B1 和 B5 会导致问题,但我仍然不明白原因!
  • @Naqme 如果B1 和B5 导致问题,则意味着B1 没有所有B NameDastgahID 和B5 没有所有BShahrID
  • 是的!检查数据后,我明白了问题所在。这让我发疯,终于我可以解决它。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 2022-12-08
  • 2014-02-15
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多