我不知道如何解释我的问题,所以这里有一个例子:
表产品
id_product / name_product
1 / aphone
2 / bphone
表tyds,product_tyd = id_product
id_tyd / product_tyd / user_tyd / action_tyd / data_tyd
11 / 1 / 1 / 5 / null
12 / 1 / 1 / 8 / 150
13 / 1 / 2 / 3 / null
14 / 1 / 2 / -8 / 250
15 / 2 / 3 / 2 / null
16 / 2 / 3 / 8 / 150
17 / 2 / 2 / 6 / null
18 / 2 / 2 / 8 / 250
表集合与表格tyds完全相同,但对于旧行:
id_collection / product_collection / user_collection / action_collection / data_collection
1 / 1 / 9 / 5 / null
2 / 1 / 9 / -3 / null
3 / 1 / 9 / -8 / 150
所以我想选择哪里的线 - action_collection = 8 OR -8 - action_tyd = 8 OR -8 对于每一行,data_tyd和/或data_collection值,但仅针对特定的id_product ......
类似的东西:
结果我期待id_product = 1的请求:
id_product / user_x / action_x / data_x
1 / 1 / 8 / 150
1 / 2 / -8 / 250
1 / 9 / -8 / 150
所以关键是要依赖action_tyd和data_tyd,我在其他请求中使用CASE并过滤行,无论哪个表都在...除了当然不是相同的列名...
我希望我的例子很明确......我实际上是想在两个单独的请求中做出来。一个用于表格tyds,一个用于表格集合,我认为它可以完成,但是一个单一的请求也可以完成这项工作......
感谢您的帮助!
答案 0 :(得分:1)
我认为你应该将tyds
和collections
合并到一个表中(有一个合适的列来标记每个记录来自哪个表),但事实上你只是想要执行一个UNION
:
SELECT product_tyd AS id_product,
user_tyd AS user_x,
action_tyd AS action_x,
data_tyd AS data_x
FROM tyds
WHERE product_tyd = 1 AND action_tyd IN (-8,8)
UNION ALL
SELECT product_collection,
user_collection,
action_collection,
data_collection
FROM collections
WHERE product_collection = 1 AND action_collection IN (-8,8)