SQLite关系表

时间:2018-11-06 20:25:53

标签: sqlite

有一个SQLite数据库,每隔几秒钟存储28个值。我的问题是该值存储在与存储变量名的表不同的表中。现在,如果可能的话,我想将值导出到例如Excel,因此需要查询两个表。每次存储值时,该值的id都会增加,因此需要进行查询以读取特定变量的每个id。但是我的SQL知识还不够好,所以希望我能在这里得到一些帮助。

数据库是这样建立的: 表1(称为记录)

id  valueid  variable
1   1        foo
2   3        bar
3   4        foobar
4   5        foo
5   6        bar
...

表2(称为值)

id  value
1   3.14
3   42
4   123
5   3.1415
6   4242
...

因此,如果我想读出所有的foo,它已将值存储在ID为1、4等的value表中(有时valueid由2而不是1增大)。可以使用带有SELECT all value FROM (table) value WHERE record.variable = foo之类的SQL命令吗?

1 个答案:

答案 0 :(得分:0)

您可以将第一个表的valueid列上的两个表连接起来,并使用Where对其进行过滤,以仅将表1中具有foo值的记录进行过滤,如下所示:

--Select all columns from t2 (value table)
--Join the value table on table 1 using the foreign key column valueid of
--table 1, which is the relationship to the id column of value table
--Using INNER JOIN will only return results where a match is found in value table
--Use the WHERE clause to filter down to only records from table 1 with variable = 'foo'
--You can use AND to add to the conditions of your WHERE clause to filter by date range

SELECT t2.*
FROM record AS t1
INNER JOIN value AS t2
ON t2.[id] = t1.[valueid]
WHERE t1.[variable] = 'foo' AND t2.[TimeStamp] >= someTimeStamp AND t2.[TimeStamp] <= someOtherTimeStamp