有一个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命令吗?
答案 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