从视图中检索数据的查询不起作用

Posted

技术标签:

【中文标题】从视图中检索数据的查询不起作用【英文标题】:query for retrieving data from view is not working 【发布时间】:2017-05-20 08:42:55 【问题描述】:

我创建了一个视图作为三个表的集成,但是当我使用查询检索视图中的数据时...系统停止工作

我使用这个查询创建了一个视图:

PreparedStatement statement1 = (com.mysql.jdbc.PreparedStatement) con1.prepareStatement("
CREATE VIEW mcps1_patients_view AS 
SELECT a.PatientID
     , PatientGender
     , PatientDateOfBirth 
     , PatientMaritalStatus
     , a.Ad_ID
     , Ad_StartDateAndTime
     , Ad_EndDateAndTime
     , d.ICD10CM_Code
     , d.PrimaryDiagnosisDescription 
  From patientcorepopulatedtable p 
  JOIN  admissionscorepopulatedtable a 
  JOIN admissionsdiagnosescorepopulatedtable d  
");  
result1 = statement1.execute();
System.out.print("connected"); 

我想对创建的视图进行查询...

PreparedStatement statement4 = (com.mysql.jdbc.PreparedStatement) con2.prepareStatement(" SELECT * From mcps2_patients_view where P_ID= ? ");  
    statement4.setString(1, Hospital2_id);
    result4 = statement4.executeQuery();
    System.out.print("connected \n") 

但最后一个查询不工作它停止工作

有什么问题??? 我该如何解决?

【问题讨论】:

那么这些表之间没有关系? 您正在创建一个名为 mcps1_patients_view 的视图并查询 mcps2_patients_view,并且 P_ID 列也未声明 - 您确定它是正确的视图吗? 【参考方案1】:

我认为您在混淆某些事情,您在创建视图时传递的查询语法应该是本机 SQL。来自javadoc

创建一个 PreparedStatement 对象,用于将参数化的 SQL 语句发送到数据库

您在那里粘贴的内容似乎是 JPQL。 SQL Join 语句还需要ON 部分来指定正在执行连接的列。比如:SELECT... FROM patient p join patient_admission pa on pa.patient_id = p.id

这是一个错字吗?我希望您创建视图的代码会引发异常。

【讨论】:

@monaalhumud,你为什么要从 Java 创建视图?您通常从数据库客户端创建视图,然后使用 Java 中的视图名称

以上是关于从视图中检索数据的查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章

更新视图未显示的范围变量。承诺不起作用

我的共享首选项存储列表视图的数据并检索它不起作用

从本地存储中检索数据不起作用

从phpMyAdmin数据库中检索数据不起作用[关闭]

当前日期查询不起作用HQL

使用自定义 json 函数检索数据时分页不起作用