Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite:我可以在另一个where语句中包含where语句吗?_Sql_Ruby On Rails_Sqlite - Fatal编程技术网

SQLite:我可以在另一个where语句中包含where语句吗?

SQLite:我可以在另一个where语句中包含where语句吗?,sql,ruby-on-rails,sqlite,Sql,Ruby On Rails,Sqlite,我正在使用Arel在RubyonRails中编写SQL查询,我将在SQLite数据库中执行这些语句 因为我的查询是由其他复杂语句组成的,所以我认为可以在另一个where语句中包含where语句 例如: SELECT * FROM "patients" INNER JOIN "encounters" INNER JOIN "conditions" WHERE "patients"."patient_characteristic_birthdate" <= '1997-06-30 07:25:

我正在使用Arel在RubyonRails中编写SQL查询,我将在SQLite数据库中执行这些语句

因为我的查询是由其他复杂语句组成的,所以我认为可以在另一个where语句中包含where语句

例如:

SELECT * FROM "patients" INNER JOIN "encounters" INNER JOIN "conditions" WHERE "patients"."patient_characteristic_birthdate" <= '1997-06-30 07:25:50 UTC' AND "encounters"."length_of_stay" <= 120 AND "encounters"."encounter" = 'Inpatient Encounter' AND (SELECT * FROM "patients" INNER JOIN "conditions" WHERE ("conditions"."diagnosis" = 'cancer' OR "conditions"."diagnosis" = 'obesity')))
数据可以是:

Patients: encounter_id,12345, 12/6/1974, male, latino
Conditions: encounter_id,Obesity, blood presure
Encounter: patient_id,date_start, date_end, 10 days, Encounter inpatient
问题是我接收到的查询是树结构的,所以我必须构造一个嵌套语句。但也许还有另一种更简单的方法

即使我被包含在我正在进行的连接的id字段中,错误也是一样的

ActiveRecord::StatementInvalid (SQLite3::SQLException: only a single result allowed for a SELECT that is part of an expression
这就像我不能在where语句中包含另一个where语句一样

select * from patients p,encounters AS e, CONDITIONS AS C where p.birth_date <='1997-06-30' AND e.lenght_of_stay<'119' and e.encounter='Inpatient Encounter' and c.diagnosis='cancer' OR c.diagnosis='obesity'
desc患者

Name         Null Type         
------------ ---- ------------ 
ENCOUNTER_ID      VARCHAR2(50) 
SSN               VARCHAR2(50) 
BIRTH_DATE        VARCHAR2(50) 
GENDER            VARCHAR2(50) 
RACE              VARCHAR2(50) 
描述条件

Name            Null Type         
--------------- ---- ------------ 
ENCOUNTER_ID         VARCHAR2(50) 
DIAGNOSIS            VARCHAR2(50) 
PRIMARY_PROBLEM      VARCHAR2(50)
原始查询结构中的问题不在“where”子句中。我觉得这是select语句放错了位置。因为您的查询将转换为以下内容:-

..和Conferences.Conference='住院患者遭遇',并使用select*返回整个表结构!无法使用“where”对其进行分析。其中需要一个类似筛选器的参数=值

我对使用UNION表示怀疑,因为要使用UNION,我们需要在两个选择中使用相同数量的表达式

您可以在另一个“where”中使用“where”,如下示例所示:

select * from patients where ENCOUNTER_ID='1' and BIRTH_DATE IN (select BIRTH_DATE from patients where birth_date <'2001-07-12');
desc患者

Name         Null Type         
------------ ---- ------------ 
ENCOUNTER_ID      VARCHAR2(50) 
SSN               VARCHAR2(50) 
BIRTH_DATE        VARCHAR2(50) 
GENDER            VARCHAR2(50) 
RACE              VARCHAR2(50) 
描述条件

Name            Null Type         
--------------- ---- ------------ 
ENCOUNTER_ID         VARCHAR2(50) 
DIAGNOSIS            VARCHAR2(50) 
PRIMARY_PROBLEM      VARCHAR2(50)
原始查询结构中的问题不在“where”子句中。我觉得这是select语句放错了位置。因为您的查询将转换为以下内容:-

..和Conferences.Conference='住院患者遭遇',并使用select*返回整个表结构!无法使用“where”对其进行分析。其中需要一个类似筛选器的参数=值

我对使用UNION表示怀疑,因为要使用UNION,我们需要在两个选择中使用相同数量的表达式

您可以在另一个“where”中使用“where”,如下示例所示:

select * from patients where ENCOUNTER_ID='1' and BIRTH_DATE IN (select BIRTH_DATE from patients where birth_date <'2001-07-12');

使用示例数据发布您的表结构没有字段将每个表链接在一起?有通过id链接的字段,是的,我没有在您的第一个SQL查询中包括它,您应该使用UNION连接两个查询的结果。使用示例数据发布表结构没有字段将每个表链接在一起?有通过id链接的字段,是的,我没有将其包括在第一个SQL查询中,您应该使用UNION连接两个查询的结果。