根据前缀值从表中拉出

时间:2017-12-14 14:36:18

标签: php mysql

我需要使用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语句来执行此操作。

MySql Database Schema

结果将是: 设备1 位置2 位置3

1 个答案:

答案 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表中的idname列定义与app_location表不同​​,我们可能需要调整查询以使其正常工作。