【问题标题】:SQL Join - May need Nested SQLSQL 连接 - 可能需要嵌套 SQL
【发布时间】:2018-07-22 03:33:46
【问题描述】:

您好,我正在尝试进行 SQL 连接,但遇到了一些问题。

这是我的数据集。我想找到所有使用员工折扣的信用卡,然后使用此列表对 df1 进行内部连接。

DF1

   Date          creditcard_number    transaction_number   store
   2017-11-01    1234567891234567     1                    1
   2017-01-01    1234567891234568     2                    1
   2017-11-01    1234567891234567     3                    1
   2017-01-01    1234567891234568     4                    1

DF2

   Date              transaction_number   store  emp_disc
   2017-11-01        1                    1      103431

Goal - df(注意到它仅针对具有 emp_disc 的卡片进行过滤)

   Date          creditcard_number    transaction_number   store   emp_disc
   2017-11-01    1234567891234567     1                    1       103431
   2017-11-01    1234567891234567     3                    1       103431

【问题讨论】:

  • 到目前为止您尝试的 JOIN 是什么?
  • 首先弄清楚你使用的是哪个RDBMS
  • MySQL joins made easy tutorials,看完本教程你应该可以做到。
  • @Strawberry 是对的 - 总是 包含您损坏的代码,并使用它来使您的问题更加具体。这不是一个传统的“帮助”网站,而是一个问答网站,其目标是创建帮助未来访问者的问题和答案,而不仅仅是提问者。在这个网站上,人们试图强迫你改进你的问题是标准的,你应该从容应对。
  • @aidenrosenblatt 遵循模式的问题——我正在尝试这样做,这是我的代码不起作用..请帮我解决这个问题,总能得到更好的回应。跨度>

标签: mysql sql-server join nested


【解决方案1】:

在 MySQL 中 试试:

SELECT A.*, B.transaction_number, B.store, B.emp_disc
FROM DF1 A INNER JOIN
(SELECT * FROM DF2 WHERE emp_disc IS NOT NULL) B
ON A.`DATE`=B.`DATE`;

有关见解,请参见 mysqltutorial.org。

【讨论】:

  • 我不明白这如何为 emp_disc 添加 col。我的方法是创建两个单独的数据框,然后将它们连接在一起,但这种方式效率不高。
  • 然后在您的问题中提供有关员工折扣的信息。我不知道你在哪里想出emp_disc
  • goal-df 有 emp_disc 它是从 df2 给出的
  • 在您的问题中提供示例数据。我不知道你想要什么!您的问题不完整。
  • df1 和 df2 是示例。目标 - df 是我想要实现的目标
【解决方案2】:

如果我没看错的话,我认为以下查询将满足您的需求:

SELECT DF1.*, DF2.emp_disc 
FROM DF1 
JOIN DF2 ON DF2.transaction_number = DF1.transaction_number 
        AND DF2.store = DF1.store
WHERE DF2.emp_disc IS NOT NULL

【讨论】:

  • sorak,我认为这行不通。我正在尝试使用 df1 和 df2 来实现目标 df。
  • 结果集是您要求的“DF”...该标签不需要存在于查询中的任何位置,除非您要求创建一个新表(我这样做不信是这样)
  • 您在上面发布的内容似乎表明您想要的输出是来自 DF1 的整个记录​​以及来自 DF2 的相关 emp_disc 值,对吗?这就是该查询应该为您提供的。
  • 我正在寻找来自 df1 的第 1 次第 3 次交易,基于 creditcard1234567891234567 出现在 df2 中的标准。我还希望与 1234567891234567 关联的 emp_disc 出现在最终输出中
  • DF2 不包含任何 creditcard_number 信息
猜你喜欢
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
相关资源
最近更新 更多