我需要使用PHP的MYSQL语句帮助。
我有以下表格:
Table: app_main
Columns: id, eid
Table: app_equipment
Columns: id, name
Table: app_locations
Columns: id, name
如果存储在app_main的'eid'中的值启动以前缀'e_'开头的表,我希望从app_equipment表中提取id和名称。如果存储在app_main表的“eid”中并以前缀“l_”开头的值,我希望从app_locations表中提取id和名称。我正在试图弄清楚如何在php中编写一个mysql语句来执行此操作。
结果将是: 设备1 位置2 位置3
答案 0 :(得分:0)
一种方法是使用两个SELECT并将结果与UNION ALL集合运算符组合。
规范并不完全清楚(示例数据和预期输出在说明要求方面会有很长的路要走。)
但我们可以这样做:
SELECT ee.id
, ee.name
FROM app_main em
JOIN app_equipment ee
ON ee.id = em.id
WHERE em.e_id LIKE 'e\_%' ESCAPE '\\'
UNION ALL
SELECT ll.id
, ll.name
FROM app_main lm
JOIN app_location ll
ON ll.id = lm.id
WHERE lm.e_id LIKE 'l\_%' ESCAPE '\\'
这可能不是最好的方法。还有其他替代方法可以返回相同的结果;但是如果没有更明确的规定,我们只是猜测应该返回什么。
请注意,UNION [ALL]
set运算符要求每个SELECT返回相同数量的列,并且列具有相同的数据类型。如果app_equipment表中的id
和name
列定义与app_location表不同,我们可能需要调整查询以使其正常工作。