从CatergoryID为1的2个表中选择*

问题描述 投票:1回答:1

我有这些表:

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中搜索它。结果:result第一个9050当我点击它时,它会转到正确的行,但之后的ID是not found。结果:enter image description here

enter image description here

mysql database join
1个回答
2
投票

你可能想要一个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
© www.soinside.com 2019 - 2024. All rights reserved.