Lit*_*T.V 5 mysql sql sqlite ios
我有一个带表的sqlite数据库 sample,surveytype并且status.所有3个表的主键id被设置为表'Operation'的外键.请参见下图中的scema

我的operation桌子因此具有价值

并作为样本

和状态

和调查类型为

需要
我需要实现的是

从操作表中获取状态ID的信息,并针对所有调查类型显示特定建筑物.
试着
我找到了一种方法,通过程序循环获取所有样本ID和所有调查类型,并获得单独的状态
for all sampleid in sample table
{
for all statustypeid in statustype table
{
select statusid from operation where sampleid = 2 and surveytypeid=1
}
}
Run Code Online (Sandbox Code Playgroud)
sql single query是否有更好的选项来生成包含所有值的表
注意:使用sqlite,适用于ios应用
您需要为每种调查类型分配一列。这是不可能直接实现的,因为 SQLite 没有数据透视函数。
您需要执行两个步骤。首先,获取所有调查类型:
SELECT ID, Longname FROM SurveyType
Run Code Online (Sandbox Code Playgroud)
然后,使用这些值构建一个查询,其中每个调查类型列都有一个子查询,如下所示:
SELECT BuildingName_EN AS 'Building Name',
BuildingID AS 'Building id',
(SELECT StatusID FROM Operation
WHERE SampleID = Sample.ID AND SurveyTypeID = 1) AS 'Survey 1',
(SELECT StatusID FROM Operation
WHERE SampleID = Sample.ID AND SurveyTypeID = 2) AS 'Survey 2',
(SELECT StatusID FROM Operation
WHERE SampleID = Sample.ID AND SurveyTypeID = 3) AS 'New Survey 3'
FROM Sample
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |