我有这些表:
table : _newapp_shop_products_events
+-------+-----------+-----------+-------------------+
| EventID | categoryID | Price |
+-------+-----------+-----------+-------------------+
| 9050 | 1 | 15.00 |
| 5048 | 2 | 12.00 |
+-------+-----------+-----------+-------------------+
table : _newapp_shop_products_categories
+-------+-----------+-----------+-------------------+
| CategoryID | Category_Name | photo |
+-------+-----------+-----------+-------------------+
| 1 | Tickets | one.jpg |
| 2 | Voucher | two.jpg |
+-------+-----------+-----------+-------------------+
table : _newapp_shop_products_activitys
+-------+-----------+-----------+-------------------+
| ActivityID | categoryID | Price |
+-------+-----------+-----------+-------------------+
| 80 | 1 | 13.00 |
| 95 | 2 | 18.00 |
+-------+-----------+-----------+-------------------+
这些是通过关系,类别 - >事件,类别 - >活动来链接的。
我想在一个列表中显示事件和活动(事件和活动表而不是_newapp),并且仅显示两个表中的项目,例如categoryID = 1。我该如何解决这个问题?
我试图加入它们或在联合中选择它们,它返回行很好但是mysql中的内部链接被破坏了。当我点击'活动'中的第二个结果集时,id是正确的和价格,但当我点击id转到相应的id时,它会产生0行结果,因为它生成查询:SELECT * FROM representin_nl_-_1.Events WHERE Id = 5
但这是错误的表,它应该在SELECT * FROM representin_nl_-_1._newapp_shop_products_activitys WHERE Id = 5
中搜索它。结果:第一个9050当我点击它时,它会转到正确的行,但之后的ID是not found
。结果:
你可能想要一个UNION
SELECT 'Event' AS Type, EventID AS Id, Price
FROM Events
WHERE CategoryId = 1
UNION ALL
SELECT 'Activity' AS Type, ActivityID AS Id, Price
FROM Activity
WHERE CategoryId = 1
你是什么意思Id冲突?你可以做这样的事情
SELECT EventID, null AS ActivityId, Price
FROM Events
WHERE CategoryId = 1
UNION ALL
SELECT null, ActivityID, Price
FROM Activity
WHERE CategoryId = 1