问题标签 [dynamic-queries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9288 浏览

ibatis - MyBatis中通过参数设置FROM子句

我无法在文档中看到任何与我的问题相关的内容,并且在部署它后,我的应用程序无法正常工作(稍后会详细介绍)。我正在尝试做类似的事情

在 MyBatis 中。我有许多具有共享列的查找表,因此视图级别的用户确定最终使用哪个查找表。我尝试执行 getLookupRows 时遇到的错误是

我的映射器界面如下:

所以我们知道我正在尝试将一个字符串传递给这个查询,没什么特别的。我有专门的专栏,因为那将是我的下一个任务。实际上,每个查找表的列之一是唯一的,因此我必须调用适当的 specificColumn,但如果我可以让表参数和 FROM 子句正常工作,我会非常高兴。

0 投票
4 回答
1731 浏览

sql - 比较日期时动态 SQL 查询返回意外结果

我正在构建一个动态查询作为 SQL Server 2008 中的存储过程,当我比较日期(作为参数提供)和日期时间(存储在数据库中)时,我得到了一些意想不到的结果。我四处寻找一些方法来比较两者而不考虑时间部分,结果发现:

我正在做的是试图找到提供的日期参数和存储的 ScheduledDate 相同的记录(以天为单位,例如 02/05/2011 和02/05/2011 11:26:19.157)。这是我为此编写的查询:

我希望此查询会为任何安排在当天访问的员工生成所有 ScheduledDates。换句话说,如果我有两个 ID 为 5 和 7 的员工,并且在 Visit 表中存在两个 ScheduleDate 条目,分别是 02/05/2011 的 ID 为 5 和 7 的员工,我希望这两个员工都回来时我运行此查询。然而,似乎当我运行它时,我只能得到一排。(作为旁注,我正在使用的两个 ScheduledDate 条目在同一天,但彼此相隔大约 3 小时。我认为 DATEDIFF 函数可以解释这一点,因为几个小时肯定在一天的时间范围。)如果我将查询中的 = 更改为 >= 0 或 <= 0,我会按预期获得更多行,但奇怪的是仍然只能获得该特定日期的单个条目。表中还有其他记录,其中同一员工在不同日期有多次访问,当我使用 >= 0 或 <= 0 时,相应地返回这些记录。例如,ID 为 41 的员工在 2011 年 10 月 29 日有 3 次访问, 11-24-2011 和 12-28-2011 当我将 DATEDIFF 更改为 >= 0 时,所有 3 个都将返回。我仍然很困惑为什么我只在两个不同的员工时才取回单个记录安排在同一日期访问。谁能提供一些关于我的逻辑在哪里出错的见解?请注意,当我对此进行测试时,我只提供了 ScheduledDate 参数。所有其他 IF IS NOT NULL 语句都会失败,因为所有其他参数都作为 NULL 插入。并且当我使用 >= 0 或 <= 0 时相应返回。例如,ID 为 41 的员工在 2011 年 10 月 29 日、2011 年 11 月 24 日和 2011 年 12 月 28 日有 3 次访问以及所有 3 次访问当我将 DATEDIFF 更改为 >= 0 时返回。我仍然很困惑为什么当两个不同的员工在同一日期安排访问时我只取回单个记录。谁能提供一些关于我的逻辑在哪里出错的见解?请注意,当我对此进行测试时,我只提供了 ScheduledDate 参数。所有其他 IF IS NOT NULL 语句都会失败,因为所有其他参数都作为 NULL 插入。并且当我使用 >= 0 或 <= 0 时相应返回。例如,ID 为 41 的员工在 2011 年 10 月 29 日、2011 年 11 月 24 日和 2011 年 12 月 28 日有 3 次访问以及所有 3 次访问当我将 DATEDIFF 更改为 >= 0 时返回。我仍然很困惑为什么当两个不同的员工在同一日期安排访问时我只取回单个记录。谁能提供一些关于我的逻辑在哪里出错的见解?请注意,当我对此进行测试时,我只提供了 ScheduledDate 参数。所有其他 IF IS NOT NULL 语句都会失败,因为所有其他参数都作为 NULL 插入。我仍然对为什么我只在两个不同的员工在同一日期安排访问时才取回单条记录感到困惑。谁能提供一些关于我的逻辑在哪里出错的见解?请注意,当我对此进行测试时,我只提供了 ScheduledDate 参数。所有其他 IF IS NOT NULL 语句都会失败,因为所有其他参数都作为 NULL 插入。我仍然对为什么我只在两个不同的员工在同一日期安排访问时才取回单条记录感到困惑。谁能提供一些关于我的逻辑在哪里出错的见解?请注意,当我对此进行测试时,我只提供了 ScheduledDate 参数。所有其他 IF IS NOT NULL 语句都会失败,因为所有其他参数都作为 NULL 插入。

0 投票
1 回答
668 浏览

c# - 用c# + Entity Framework + 存储过程构建动态查询

我正在开发一项功能,用户可以在每个参数中选择多个具有多个值的参数。我试图找出一种方法来使用 C# 在我的应用程序中设计此功能,实体框架将实体映射到存储过程。由于安全原因,我的应用程序必须通过只有存储过程的代理数据库来访问数据库。因此,我的实体被映射到用于插入、更新和选择的存储过程。最终,我需要将用户选择的过滤器传递给存储过程以查询数据库。我想到的解决方案之一是将所有数据检索到我的业务层并使用 linq 进一步过滤掉。但这并不理想,因为内存评估器中过滤的数据量比数据库更适合执行这种复杂查询。我已经看过使用 linq 构建动态查询的帖子,但是在这些帖子中,实体被映射到表中,这使得它更容易。这里的任何帮助将不胜感激。谢谢你,sirkal

0 投票
2 回答
799 浏览

.net - LINQ - 动态 orderby 子句不起作用

我有这样的代码:

除了 OrderBy,它工作正常。生成的 SQL 代码不包含 orderby 子句,记录未排序。

任何的想法?感谢帮助。

0 投票
1 回答
127 浏览

grails - 命名查询错误 grails

我有一个域类DefectData如下

我正在尝试这种查询,这将使我能够获得在“测试”阶段检测到的缺陷的计数。

虽然,我收到此错误,但日期无法解析

无法解析的日期“3-12”。我只想根据月份和年份列出记录。

可能是什么问题?

0 投票
2 回答
1336 浏览

hibernate - 使用连接或子查询将 SQL 查询转换为动态查询

我有一个 SQL 查询(2 个变体),我需要将它与动态查询一起使用。

在 SQL 中看起来是这样(变体 1 // 通过子查询):

或者带有连接和组的替代查询:

两个 SQL 查询显示完全相同!

现在我需要使用其中之一作为动态查询。我不知道如何进行连接,也不知道如何在投影中进行子查询?!

有谁能够帮我?谢谢


我必须用 custom-sql 来做到这一点。

0 投票
2 回答
490 浏览

mysql - 使用 $query->addExpression() 时如何保留要选择的字段的顺序

我正在使用 Drupal 7,我必须在多个表上建立一个联合。要使工会工作,必须满足一些条件:

  1. 相同的列数
  2. 相同的数据类型
  3. 相同的顺序

一些表缺少一列,因此为了弥补这一点,我只需添加如下内容$query->addExpression(':field_1', 'field_1', array(':field_1' => NULL));:所以此时条件1&2都满足了,但是select中的字段顺序不同。

请参见下面的示例:

结果是:

似乎 using$query->addExpression不能保证该字段的位置是您期望的位置。addExpression查看已使用的第三个查询的转储。关于如何解决这个问题的任何想法?

0 投票
1 回答
199 浏览

mysql - 使用联合占位符时,似乎替换为联合中使用的初始选择中的值

这或多或少与如何在使用 $query->addExpression() 时保留要选择的字段的顺序有关

我正在做的是union在多张桌子上制作一个。但我还需要知道这些值来自哪个表。所以我只是添加这样的东西:$query->addExpression(':table', 'table_name', array(':table' => $table_name));

问题是,一旦您进行联合,表名就会被第一个查询中的表名替换。

检查以下示例:

如果我们单独检查选择,它们看起来都很好,你会得到预期的结果,但是当使用联合时,你只会看到table_one到处都是。

如果你有想法会很棒,因为我一直在努力解决这个问题......

0 投票
2 回答
1110 浏览

asp.net - 使用 LINQ vb 搜索多个关键字

我有一些现有代码需要修改以搜索多个关键字。(顺便说一句,我对这一切都很陌生)

我将如何改变这一点,所以如果我输入标准“猫毛”,它将进行 OR 搜索。所以...t.TopicTitle.Contains("cat") OR t.TopicTitle.Contains("hair") ...。当然,它需要是动态的。

我试过这个,但无法让它工作。

想法是拆分空格并继续附加到 where 子句。我知道在 SQL 中这可能有效,但在这种情况下我将如何进行呢?

0 投票
2 回答
461 浏览

sql - 来自 Sybase 的神秘 SQL 错误(错误 -680)

我尝试在 PHP 中针对 Sybase SQL-Anywhere 数据库运行动态生成的 SQL 查询,但出现以下错误:

Warning: sybase_query(): message: SQL Anywhere Error -680: Invalid expression in WHERE clause of Transact-SQL outer join (severity 16) in /path/to/file.php

SQL 查询字符串:

我对 SQL 或与数据库的接口并不完全陌生,但这条消息让我很困惑。它声称WHERE子句中有一个无效的表达式,但我看不到查询的结构是如何非法的。我的猜测是错误涉及OR两个搜索结果的合并。

此外,通过运行这三个单独的查询并组合结果(在 Excel 中),返回正确的结果集:

查询一:

查询 B

查询 C

为了澄清我想要的返回结果:

在此处输入图像描述

关于Sybase 文档error -680的内容如下:

使用 Transact-SQL 语法的查询的 WHERE 子句中的表达式包含将提供 NULL 的表中的列与子查询或引用另一个表中的列的表达式进行比较。

  1. 原始 SQL 查询有什么无效之处?

  2. 记录在案的解释是什么意思?

  3. 如何编辑原始 SQL 查询以获得所需的结果?

请注意,由于此查询是动态生成的,我想知道如何更改子句之间的OR语句:

语句结构: