【问题标题】:sql many to many relationship with only 2 tablessql多对多关系只有2个表
【发布时间】:2016-03-31 15:47:08
【问题描述】:

所以我有两个表需要为客户加入。这些表只共享一个共同的字段(颜色,它不是唯一的键标识)。是否可以加入/关联这两个表?

所以理论上我有两张表,分别带有颜色和颜色属性,如下所示:

+-------+----------+
| COLOR |   NAME   |
+-------+----------+
| red   | brian    |
| red   | ben      |
| red   | tom      |
| red   | jennifer |
| blue  | tom      |
| blue  | billy    |
| blue  | michelle |
+-------+----------+  

另外一个表只与颜色列相关,但有多个颜色权重:

+-------+--------+
| COLOR | WEIGHT |
+-------+--------+
| red   |     12 |
| red   |      3 |
| red   |     11 |
| blue  |      4 |
| blue  |     23 |
| blue  |      7 |
| blue  |      5 |
| blue  |     10 |
+-------+--------+  

那么,如果仅共享颜色列,我该如何加入这两个表?结果会是什么样子?提前致谢!

【问题讨论】:

  • 结果会是什么样子?试试吧。实际的问题是:你想要什么结果?
  • 是将每个人的“红色”乘以体重表的唯一解决方案,使红色出现 4x3 = 12 次?蓝色是 3x5=15 倍?
  • 这将是标准响应,是的。你还想要别的吗?
  • 如果出现实际问题,请修复您的标签,只保留您使用的数据库系统(Access / Sql Server / MySql)
  • 并不是要踩脚趾安德烈,但我同时使用 Access 和 SQL 服务器,因为当我尝试运行查询时 Access 崩溃(超过 2gig 内存限制)。如果这是乘以记录的正确答案,那么我想我需要找到一种解决方法来创建这个庞大的查询!

标签: mysql sql sql-server database ms-access


【解决方案1】:

虽然 color 不是唯一标识符,但如果您打算对其执行连接,它将被视为唯一标识符。

SELECT * FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.COLOR = t2.COLOR
ORDER BY COLOR DESC;

这会输出三列,其中包含 12 个“红色行”和 15 个“蓝色行”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-22
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多