查询使用3个表

时间:2014-01-10 11:20:59

标签: mysql sql

我正在尝试选择每个人使用的机器和kpi的列表。

KPIs
- id       ('123')

MACHINE
- id       ('567')

KPIDATA
- key      ('k.123.i.567.a.000')

KPIDATA行表示机器567 使用 kpi 123 。如何在一个查询中选择它?

2 个答案:

答案 0 :(得分:1)

假设Kpidata key字段的格式相同,即k.123.i.567.a.000

此查询可能会有所帮助

SELECT 
      k.`id`,
      m.`MACHINE`,
      kd.`key` 
FROM 
      KPIs as k,
      MACHINE as m,
      KPIDATA as kd
WHERE 
      k.`id` = SUBSTR(kd.`key`,LOCATE('.',kd.`key`)+1,3)
AND
      m.`MACHINE` = SUBSTR(kd.`key`,LOCATE('.i.',kd.`key`)+3,3)

http://sqlfiddle.com/#!2/7d814b/17

的工作演示

答案 1 :(得分:0)

SELECT k.id AS key, m.id AS machine
FROM   KPIs k, MACHINE m
WHERE  EXISTS ( 
    SELECT 1 FROM KPIDATA x
    WHERE  x.key LIKE 'k.' + k.id + '.i.' + m.id + '.a.%' );