当前位置: 首页 > 面试题库 >

SQL查询-表联接问题

郎泰平
2023-03-14
问题内容

遇到了一些严重的问题,无法解决如何针对我的情况建立适当的查询。.可以肯定的是,这取决于正确地连接表,但是经过大量的谷歌搜索之后,我似乎无法弄清楚…

我有下表。

Main:
ID, WhenDate, InfoText, StatusID, TypeID

和…

Status:
ID, StatusText    

和…

Secondary:
MainID, WhenDate

希望我能够正确解释这一点。.我在Main中有一堆记录,我需要从中获取信息。.我需要能够对WhenDate和TypeID进行过滤。我还需要从链接到StatusID的状态表中获取StatusText。
问题:
次要表链接到Main中的记录,次要中的任何记录都应导致与Main中的记录相同的行,不同之处在于,使用了Secondary中的WhileDate而不是Main中的WhileDate。

任何帮助都将不胜感激,即使只是提示,例如使用什么类型的联接等等。


问题答案:

我使用INNER JOIN状态作为假设每个主记录都引用一个现有的状态记录。如果不是这种情况,您可能需要将其更改为LEFT JOIN

对于WhenDate,您只需离开即可加入Secondary。如果找到一条记录,则可以与Secondary.WhenDate进行比较,否则,可以与Main.WhenDate进行比较。

SELECT
  m.ID as MainID,
  m.WhenDate as MainWhenDate, 
  m.InfoText, 
  m.StatusID,
  st.StatusText,
  m.TypeID,
  s.WhenDate as SecondaryWhenDate,
  CASE WHEN s.MainID IS NULL THEN 
    m.WhenDate 
  ELSE 
    s.WhenDate 
  END AS ActualWhenDate
FROM
  Main m
  INNER JOIN Status st ON st.ID = m.StatusID
  LEFT JOIN Secondary s ON s.MainID = m.ID
WHERE
  ( s.MainID IS NULL AND m.WhenDate = <YourDate>
    OR
    s.MainID IS NOT NULL AND s.WhenDate = <YourDate> )
  AND TypeId = <TypeFilter>
  AND ... other filters, if you need any ...


 类似资料:
  • 我一直在理解Laravel查询生成器和纯SQL之间的融合。 我有2张桌子: user:包含具有主键的用户 User_Action:这是一个表,其中包含由和动作的组成的PRIMARYs记录。 ex: 使用者 用户操作 我的需要: 现在我想检索一个用户列表,其中包含每个用户的最新操作。因此,我只需要在从到的连接中获取一行,并且这一行必须是具有最新日期时间的一行。我的前任也是如此;我只想获取dateti

  • 问题内容: 在我的数据库中有4个关系表,想加入它们以获取总价值…例如,我有朋友,家人,关注者和熟人,并希望加入这些以获得“ ALL”值。 表格格式如下: 朋友们 家庭 下列的 熟人 是联接所有4个表的正确查询… 基本上,我想从其中id =我的id的所有四个表中检索“ following”(跟随)值 问题答案: 如果 所有表 都具有与Friends表的链接,则当前查询仅列出结果。我相信您正在寻找类似

  • 问题内容: 第一次问有关Stack Overflow的问题…令人惊讶的资源,但是有一点让我作为SQL的新手感到困惑。 我有三个表,我想获取与鲍勃的学生相关的所有导师的姓名。 表1:老师 表2:学生 表3:MENTOR_RELATIONSHIPS 表4:导师 我想查询一下鲍勃学生的所有导师。因此,所有学生的导师 在这种情况下,肖恩就是结果。 我知道这与Joins有关,还是可以使用常规查询找到它??

  • 问题内容: 我正在尝试将SQL转换为SQLAlchemy。我要查询的SQL版本如下: 我的SQLAlchemy查询如下: 我收到一个错误 如果我将SQLAlchemy查询调整为以下内容: 结果= query.all() 我得到一个错误 任何帮助,将不胜感激,谢谢! 问题答案: 一旦调用,就无法访​​问 对象 ,而只能通过访问器访问列。 而是执行以下操作:仅加载所需的列,以避免任何名称冲突: 然后在

  • 我有一个关于Hibernate ManyToOne协会的问题。 我有一个产品实体映射如下: 所以你怎么能看到我们与ProductClass表的关系。和FK我们存储在产品表中。当我创建查询,选择产品的特定类别和价格我有下一个this_: 我接下来的问题是:如何避免Product和ProductCategory这两个表的内部联接? 我的标准DAO代码:<代码>标准。createAlias(“类别”、“

  • 问题内容: 我正在使用此查询: 产生以下结果: 我改变了场CAT_ID到一个名为新表包含的字段,,。我如何通过也加入该表来编写新查询,以获得与上述相同的结果? 我是数据库新手,需要帮助。提前致谢 问题答案: 试试这个: 这个想法很简单,在新表中的第一个字段是工作作为 代理键 ,它没有任何与其他两个表之间的关系。然后,我们来到了另外两个领域是哪些,这些你应该映射到关系的其他两个方面。 您不能使用新模