【问题标题】:Indentify records from one table through a second table从一张表到另一张表中识别记录
【发布时间】:2013-04-22 03:36:11
【问题描述】:

我认为我的问题的答案可能比较简单,但是由于我几周才开始接触 SQL,所以我真的没有找到解决问题的方法;

我有三个表(DIGITAL、PRINTER、ADVERT),我想根据 EMAIL 字段合并它们(EMAIL 字段对于每个表的每一行都是唯一的,但与其他表有一些重叠表,其他字段要跟在e-mail表后面,不能查询);

现状:

数字

  • aa@aa.com - fname - lname
  • bb@bb.com - fname - lname
  • cc@cc.com - fname - lname

打印机

  • dd@dd.com - fname - lname
  • ee@ee.com - fname - lname
  • aa@aa.com - fname - lname

广告

  • ff@ff.com - fname - lname
  • cc@cc.com - fname - lname
  • aa@aa.com - fname - lname

我想去哪里:

主表

  • aa@aa.com - fname - lname
  • bb@bb.com - fname - lname
  • cc@cc.com - fname - lname
  • ee@ee.com - fname - lname
  • ff@ff.com - fname - lname

通过使用 UNION 语句,我可以得出这个结果,但是我丢失了除 EMAIL 之外的所有其他字段。

谁能帮帮我,我会非常非常非常感谢!

【问题讨论】:

    标签: sql union


    【解决方案1】:

    以下查询应该会得到电子邮件、fname 和 lname 的合并结果:

    select email,fname,lname from digital
    union
    select email,fname,lname from printer
    union
    select email,fname,lname from advert;
    

    【讨论】:

    • 谢谢,我已经知道了,但是;此查询比较三个(电子邮件 fname lname)字段并基于此给出结果。我宁愿合并电子邮件,然后根据剩下的唯一电子邮件在旁边添加字段 fname lname。但无论如何,非常感谢您的快速响应!
    • 我正在考虑一个联合,结合 join 语句。这是要走的路吗?
    • 电子邮件、lname 和 fname 的联合是要走的路。如果您只是在电子邮件上进行联合并尝试通过加入所有三个表来获取名称,那么它将是开销。你能详细说明为什么你不想加入姓名和电子邮件吗?
    • 因为有些名字是双重的,由于人为拼写错误,甚至将 fname&lname 放在 fname 字段中,将被视为唯一的。你明白我的意思吗?我从前雇员那里得到了这个数据库,:p.
    • 那么在这种情况下你的方法是正确的,联合加入是要走的路。
    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2018-06-24
    相关资源
    最近更新 更多