首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将左联接限制为视图中的最新日期

问将左联接限制为视图中的最新日期
EN

Stack Overflow用户
提问于 2014-08-27 23:53:46
回答 2查看 239关注 0票数 0

我有一个连接到一个表的查询,我只想看到基于dtm的最后一个输入的结果。

这是我的疑问:

代码语言:javascript
复制
CREATE OR REPLACE VIEW vwc_students AS 
SELECT u_students.stud_id,u_students.stud_firstname, u_students.stud_middlename,u_students.stud_lastname, CONCAT_WS(' ',u_userse.user_firstname,u_userse.user_lastname) AS stud_editeduser, u_students.stud_edited, u_tbleeditlog.editedDtm
FROM u_students
JOIN u_studsites ON u_studsites.uss_studid = u_students.stud_id
JOIN u_locations ON u_locations.loc_id = u_students.stud_base
JOIN u_users ON u_users.user_id = u_students.stud_loggedid
LEFT JOIN (SELECT editedID, editedDtm FROM u_tbleeditlog WHERE editSite = 1 AND editType = 1 ORDER BY editedDtm DESC LIMIT 1) u_tbleeditlog ON u_tbleeditlog.editedID = u_students.stud_id
LEFT JOIN u_users AS u_userse ON u_userse.user_id = u_tbleeditlog.editedID
WHERE u_studsites.uss_siteid = '1'

但是我得到了错误#1349 - View's SELECT contains a subquery in the FROM clause

我从限制左连接返回一个结果?和MySQL通过每个结果的DateTime连接多个表并限制最后一个表获得了代码示例

我想做的是可能的吗?如果是的话,怎么做?

更新

我现在有以下两点意见:

代码语言:javascript
复制
CREATE OR REPLACE VIEW vwc_students AS 
SELECT u_students.stud_id,u_students.stud_firstname, u_students.stud_middlename,u_students.stud_lastname, u_userse.editedEditor AS stud_editeduser, u_userse.editedDtm AS stud_edited
FROM u_students
JOIN u_studsites ON u_studsites.uss_studid = u_students.stud_id
JOIN u_locations ON u_locations.loc_id = u_students.stud_base
JOIN u_users ON u_users.user_id = u_students.stud_loggedid
LEFT JOIN vwu_editlog AS u_userse ON u_userse.editTypeID = u_students.stud_id AND u_userse.editType = 1
WHERE u_studsites.uss_siteid = '1'

和

代码语言:javascript
复制
CREATE OR REPLACE VIEW vwu_editlog AS 
SELECT u_tbleeditlog.*, CONCAT_WS(' ',u_users.user_firstname,u_users.user_lastname) AS editedEditor
FROM u_tbleeditlog
JOIN u_users ON u_users.user_id = u_tbleeditlog.editedID
ORDER BY u_tbleeditlog.editedDtm DESC LIMIT 1

但是最后一个视图是将整个事情限制为1结果!如何将每个唯一的ID限制为1?我还会收到消息Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.,即使在原始表中也是如此。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-27 23:57:52

复本:视图的SELECT包含FROM子句中的子查询

根据文件:

MySQL文档

  • SELECT语句不能在FROM子句中包含子查询。

您的解决方法是为每个子查询创建一个视图。

然后从视图view_credit_status中访问这些视图

所以也许你会先做这样的事:

代码语言:javascript
复制
CREATE OR REPLACE VIEW u_tbleeditlog AS 
 SELECT editedID, editedDtm
  FROM u_tbleeditlog
  WHERE editSite = 1
  AND editType = 1
  ORDER BY editedDtm DESC
  LIMIT 1;
票数 1
EN

Stack Overflow用户

发布于 2014-08-27 23:58:50

您忽略了以下事实: MySQL中的视图不允许from子句中的子查询。但是,在select、where和where子句中允许使用它们。

文档:http://dev.mysql.com/doc/refman/5.0/en/create-view.html非常清楚:

子查询不能在视图的FROM子句中使用。

在您的示例中,您可能可以将from子句重写为select子句中的关联子查询。您还可以使用多个视图层来执行您想做的事情。

为每个FROM子句创建一个单独的视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25538715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档