【发布时间】:2016-04-15 08:30:35
【问题描述】:
我的表格中有一些数据,如下所示:
用户
user_id name
1 John
2 William
3 cindy
4 Julian
5 Monique
订完
user_id book_id
1 1
2 3
3 5
5 10
乙烯基输出
user_id vinyl_id
1 6
2 7
3 8
4 9
我想要一个会产生此输出的 SELECT 语句:
user_id item_out
1 1
1 6
2 3
2 7
3 5
3 8
4 9
5 10
所以,按照 user_id 和 book_id/vinyl_id 的顺序。这可能吗?
【问题讨论】:
-
您可以 LEFT JOIN 两个表并使用 IFNULL() 检查要显示的 id。请记住一件事,如果两个表中的 id 相同,您将看不到它是黑胶唱片还是书。
-
如果我是你,我会在你还可以的时候重组数据库。制作一张表
product out并为类型添加一个枚举列。您现在使用的结构似乎有缺陷,尤其是因为它们似乎共享相同的 id(它们必须是唯一的) -
@Jester 这个例子不是我真正的生产问题,只是一个简化的例子。在我的真实数据库中,重构数据库并不是那么容易而且更复杂。但你是对的。我应该考虑如何重组这个组件。
-
@johan 两个表确实具有相同的 ID。现在我通过在 select 语句中添加一个带有书籍和乙烯基默认值的额外列来解决这个问题。长期的解决方案是重组数据库。