【发布时间】:2014-01-17 02:40:08
【问题描述】:
我在 MYSQL 中有两个表,一个包含客户可以选择的选项列表,另一个包含选项的成本。我想要一个返回每个客户选项集成本的视图。在我的示例中,我将使用购买新车的类比。
客户表
customer - sunroof - mag_wheels - spoiler
--------------------------------------------------
John - true - true - false
Steve - false - true - false
Lucy - false - false - false
选项表
option - price
-----------------
sunroof - 100
mag_wheels - 150
spoiler - 75
期望的结果
customer - cost
-----------------
John - 250
Steve - 150
Lucy - 0
或者这样做可以,因为我很容易按价格乘以选择,然后按客户分组
customer - option - selected - price
------------------------------------------
John - sunroof - true - 100
John - mag_wheels - true - 150
John - spoiler - false - 75
Steve - sunroof - false - 100
Steve - mag_wheels - true - 150
Steve - spoiler - false - 75
Lucy - sunroof - false - 100
Lucy - mag_wheels - false - 150
Lucy - spoiler - false - 75
我已经为此困惑了好几个小时,我什至不知道从哪里开始,连接似乎是不可能的,因为没有共同的元素可以匹配。我想知道使用 UNION 是否是答案,但我不知道如何将行值与列标题结合起来。
如果有人能指出我正确的方向,我将不胜感激,如果你想出一个动态选择不同选项的解决方案,那么我可以在不重写查询的情况下添加更多内容。
非常感谢。
我希望将所有选项作为一行的原因是我希望使用 Access 制作一个用于选择选项的表单,但我无法弄清楚单个表单如何创建多行。
【问题讨论】:
-
您应该重新设计您的表格。从 users 表中删除选项 - 它们应该被拆分到自己的表中:
users -> user_options -> options,之后您可以使用简单的 JOIN 操作来完成您想要的操作。 -
我将有一个单独的用户表,我只是在选项表中有用户名,这样我就可以区分订单。如果我有一个单独的用户表,查询会是什么样子?