0

又一次来这里寻求帮助。

我快要疯了

注意:当我使用 ID 术语时,我指的是非自动增量 ID。每个 ID 标识一个客户

我有 4 张不同的桌子。

1° 具有唯一 ID 的表(12.000 条记录)。此表用于名字、姓氏、出生日期、地址、邮件等

2° 具有相同唯一 ID 的第一个表(12.000 条记录/相同值)。此表用于其他类型的数据,如反馈

具有唯一 ID 的 3° 表但 isted 为 12.000 只有 10 个,但它们具有相同的值 1° 和 2° 表。此表用于将 ID 分配给管理其 ID 的用户

没有唯一 ID 的 4° 表。大约 6.000 条记录。在此表中,我有相同的 ID 值,但相同 ID 的数量是从 1 到 5。此表用于购买客户。因此,我有更多具有相同 ID 但具有不同购买数据、日期/时间等的记录。

表 1.(相同数量的唯一 ID)CustomersMaster

ID        |Name     |Surname   |mail          |
----------|---------|----------|--------------|
40302025  |Jack     |  Daniel  |  m1@site.com |
40302028  |Martin   |  Scorzese|  m2@site.com |
40302030  |Donald   |  Duck    |  m3@site.com |
40302055  |Eric     |  Clapton |  m4@site.com |
40302074  |Mark     |  Knopfler|  m5@site.com |

表 2. 反馈(相同数量的唯一 ID,如表 1)

ID        |Feedback |
----------|---------|
40302025  |  10     |
40302028  |  8      |
40302030  |  7      |
40302055  |  9      |
40302074  |  10     |

表 3. CustomersToUsers(不同数量的唯一 ID)

ID        |managed_by|
----------|----------|
40302025  |User001   |
40302028  |User002   |
40302055  |User004   |
40302074  |User004   |

表 4. 采购。(不同数量的相同ID,有时ID不存在,例如示例)

例如,在此表中 ID 40302074 不存在,因为客户尚未购买任何产品。

ID        |ProductCode|
----------|-----------|
40302025  |505        |
40302025  |510        |
40302025  |300        |
40302025  |305        |
40302028  |505        |
40302028  |545        |
40302028  |515        |
40302028  |212        |
40302028  |121        |
40302030  |510        |
40302030  |510        |
40302030  |510        |
40302030  |510        |
40302055  |300        |
40302055  |300        |
40302055  |300        |

现在。我尝试使用LEFT OUTER JOIN.


SELECT A.NAME, A.SURNAME, A.MAIL, B.FEEDBACK, C.MANAGED_BY, D.PRODUCTCODE 
FROM 


    CUSTOMERSMASTER AS A 

    LEFT OUTER JOIN

    FEEDBACKS AS B ON A.ID = B.ID

    LEFT OUTER JOIN

    CustomersToUsers AS C ON B.ID = C.ID

    LEFT OUTER JOIN

    Purchases AS D ON C.ID = D.ID

结果是更少的行数,但是如果我从查询中删除 Purchase 表(onSELECT和 on LEFT OUTER JOIN)结果是好的

什么是呜呜呜 :(

感谢您的回答

卡罗

4

3 回答 3

0

因为您的购买表中有超过 1 行,对于上述查询,您将获得比CustomersMaster表更多的行,

检查此链接:- sqlfiddle 示例,也许这对您有所帮助

于 2013-06-10T17:49:55.287 回答
0

在您的最后一个连接条件中使用A.ID = D.ID而不是。C.ID = D.ID

因为您在 A 中的许多记录在 C 中没有相关记录,所以 C.id 将为 null 并且....

于 2013-06-10T17:27:50.203 回答
-1

我更喜欢这种方式,但这一切都归结为您通常使用的方式。对我来说,它更加清晰和富有表现力。这应该适用于这种情况。

SELECT A.NAME, A.SURNAME, A.MAIL, B.FEEDBACK, C.MANAGED_BY, D.PRODUCTCODE 
FROM 


    CUSTOMERSMASTER A, FEEDBACKS B, CustomersToUsers C, Purchases D

  where 
    A.id=B.id && B.id=C.id && C.id= D.id;
于 2013-06-10T17:16:20.167 回答