标签: correlated-subquery

子查询中的SqlAlchemy闭包

我搜索了很多主题并没有找到答案,或者问题太复杂了.好吧 这是我的第一个问题.这是SQL

SELECT  parent.*,
(
    SELECT  COUNT(*)
    FROM    child
    WHERE   parent.id = child.parent_id
)
FROM parent
Run Code Online (Sandbox Code Playgroud)

如何在sqlalchemy中执行此子句?

WHERE   ui.invited_by = u.id
Run Code Online (Sandbox Code Playgroud)

可以在收藏中复制吗?sql表达式?PS我知道它可以通过group_by来完成.但我需要通过子查询.

谢谢.

closures sqlalchemy subquery correlated-subquery

5
推荐指数
1
解决办法
1590
查看次数

SQL Delete清除表而不是错误

我有一块SQL(你认为)不会编译,而是删除目标表中的所有行.

考虑这个设置:

create table TableA (ColumnA varchar(200));
create table TableB (ColumnB varchar(200));

insert TableA values ('A'),('B'),('C');
insert TableB values ('A');
Run Code Online (Sandbox Code Playgroud)

然后是以下sql:

--Returns all rows from TableA
select * from TableA;

--Does not error (ColumnA does not exist on TableB)
delete TableA where ColumnA in (select ColumnA from TableB)

--No Rows are returned
select * from TableA;
Run Code Online (Sandbox Code Playgroud)

上面的delete语句会导致所有行被删除TableA,而不是ColumnA在其中不存在的错误TableB

这里有一个SQL小提琴:http ://www.sqlfiddle.com/#!3/9d883 /6

看来这个ColumnA来自TableA正在被接收,但预计它将"超出范围".

为什么是这样?

t-sql sql-server sql-server-2008 correlated-subquery

5
推荐指数
1
解决办法
130
查看次数

Linq中的相关子查询

我有一张员工桌子和EmployeeCourseStatus桌子.

我想显示每个员工的列表,其中包含已完成的课程数(status = "CMP").

我有以下相关子查询,导致以下错误:

var query = (from emp in Employee
                     join adr in EmployeeAddress on emp.id = adr.EmployeeID
                     select new
                     {
                        id = emp.id,
                        name=emp.name,
                        country=adr.country,
                        CompletedCourseCount = (from c in employeeCourseStatus where c.empid = emp.id && c.status == "CMP" select c.id).count()
                     }
Run Code Online (Sandbox Code Playgroud)

错误:

仅支持Premitive类型.

等效的SQL子查询将是 -

Select emp.id
       , emp.name
       , adr.Country
       , CompletedCourseCount = (select count(id) from EmployeeCourseStatus where id = emp.id and status = "CMP") 
from   Employee emp
       JOIN employeeaddress adr …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework correlated-subquery

5
推荐指数
1
解决办法
4477
查看次数

可以在Sybase ASE中使用具有"TOP 1列"的相关子查询吗?

我试图在Sybase ASE 12上使用建议的查询,它抱怨语法错误.

SELECT 
    item, 
    ( SELECT TOP 1 tags.tag
      FROM #tags tags
        LEFT JOIN t o
          ON  tags.tag = o.tag
          AND o.item_id = n.item_id 
      WHERE o.tag IS NULL
      ORDER BY tags.tag
    ) 'tag',
    value  
FROM
    t_new n
Run Code Online (Sandbox Code Playgroud)

错误: Incorrect syntax near the keyword 'top'.

但是,当我用MAX()替换(TOP 1 tag... ORDER BY tag)时,同样的查询有效:

SELECT 
    item, 
    ( SELECT max(tags.tag)
      FROM #tags tags
        LEFT JOIN t o
          ON  tags.tag = o.tag
          AND o.item_id = n.item_id 
      WHERE o.tag IS NULL …
Run Code Online (Sandbox Code Playgroud)

sql subquery sybase-ase correlated-subquery

5
推荐指数
1
解决办法
5011
查看次数

这是一个缓慢的查询?可以改进吗?

我正在通过SQLZOO" SELECT教程中的SELECT ",这是完成工作的一个查询(任务7)

世界(名称,大陆,地区,人口,gdp)

SELECT w1.name, w1.continent, w1.population 
FROM world w1
WHERE 25000000 >= ALL(SELECT w2.population FROM world w2 WHERE w2.continent=w1.continent)
Run Code Online (Sandbox Code Playgroud)

我的问题是关于此类查询的有效性.子查询将针对主查询的每一行(国家)运行,从而重复地重新填充给定大陆的ALL列表.

  1. 我应该关注还是Oracle优化会以某种方式处理它?
  2. 没有相关的子查询可以重新编程吗?

sql oracle subquery query-optimization correlated-subquery

5
推荐指数
1
解决办法
268
查看次数

列前缀'%s'与查询中使用的表名或别名不匹配

我正在尝试对远程2000服务器运行查询; 但是本地服务器生成的查询不正确,导致远程服务器返回错误:

列前缀"Tbl1002"与查询中使用的表名或别名不匹配.

跟踪远程服务器时,您可以看到该sp_cursorprepexec批处理实际上是无效的SQL; 它引用了一个Tbl1002不存在的dervied表.

我在本地服务器上运行的查询是:

SELECT
    P.Code, P.Name AS PositionName, P.CompCommitteeMember,
    (    SELECT COUNT(*) 
         FROM Employees E 
         WHERE E.PositionID = P.PositionID
    ) AS EmployeeCount
FROM Positions P
WHERE P.PositionID = '{D1B0912D-B1A5-11D4-BBDD-0004ACC5B8A7}' 
Run Code Online (Sandbox Code Playgroud)

其中EmployeesPositions是仅从链接服务器中选择的视图.为了消除这种混淆,我们将消除视图 - 并直接使用四部分命名:

SELECT
    P.Code, P.Name AS PositionName, P.CompCommitteeMember,
    (    SELECT COUNT(*) 
         FROM WCLHR.CasinoHR.dbo.Employees E 
         WHERE E.PositionID = P.PositionID
    ) AS EmployeeCount
FROM WCLHR.CasinoHR.dbo.Positions P
WHERE P.PositionID = '{D1B0912D-B1A5-11D4-BBDD-0004ACC5B8A7}' 
Run Code Online (Sandbox Code Playgroud)

并且查询仍然失败:

列前缀"Tbl1002"与查询中使用的表名或别名不匹配.

为了消除WHERE条款中guid的任何混淆,我们将删除该 …

sql-server sql-server-2000 sql-server-2008-r2 correlated-subquery

5
推荐指数
1
解决办法
5359
查看次数

从多个表中获取外键的数量

我有3个表,表B和C通过外键引用表A. 我想在PostgreSQL中编写一个查询来获取A中的所有ID以及它们在B&C中的总出现次数.

   a      |     b      |     c
-----------------------------------    
id | txt  |  id | a_id |  id | a_id  
---+----  |  ---+----- |  ---+------ 
1  |  a   |  1  |  1   |  1  |  3    
2  |  b   |  2  |  1   |  2  |  4    
3  |  c   |  3  |  3   |  3  |  4    
4  |  d   |  4  |  4   |  4  |  4    
Run Code Online (Sandbox Code Playgroud)

所需输出(只是A中的id和B&C中的总数):

id | Count
---+-------  
1  |  2      -- twice in B …
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate-functions left-join correlated-subquery

5
推荐指数
1
解决办法
2514
查看次数

在Postgres中为比赛存储'等级'

我正在尝试确定以下查询是否存在"低成本"优化.我们已经实施了一个系统,"门票"可以获得"积分",因此可以进行排名.为了支持分析类型的查询,我们将每个票证的等级(票证可以绑定)与票证一起存储.

我发现,在规模上,更新此排名非常缓慢.我试图在一组大约20k门票的"门票"上运行下面的场景.

我希望有人可以帮助确定原因并提供一些帮助.

我们在postgres 9.3.6

这是一个简化的票证表架构:

ogs_1=> \d api_ticket
                                             Table "public.api_ticket"
            Column            |           Type           |                        Modifiers                        
------------------------------+--------------------------+---------------------------------------------------------
 id                           | integer                  | not null default nextval('api_ticket_id_seq'::regclass)
 status                       | character varying(3)     | not null
 points_earned                | integer                  | not null
 rank                         | integer                  | not null
 event_id                     | integer                  | not null
 user_id                      | integer                  | not null
Indexes:
    "api_ticket_pkey" PRIMARY KEY, btree (id)
    "api_ticket_4437cfac" btree (event_id)
    "api_ticket_e8701ad4" btree (user_id)
    "api_ticket_points_earned_idx" btree (points_earned)
    "api_ticket_rank_idx" btree ("rank")
Foreign-key constraints:
    "api_ticket_event_id_598c97289edc0e3e_fk_api_event_id" FOREIGN KEY (event_id) …
Run Code Online (Sandbox Code Playgroud)

sql postgresql correlated-subquery sql-update postgresql-performance

5
推荐指数
1
解决办法
243
查看次数

使用SQL显示组内的最小值和最大值

目标

我正在寻找一种方法来计算等于组的最小或最大项目数。我每隔几天收到一次商品,每两周输入一次。我需要查看每个EntryDate的最小值和最大值ReceivedDate,以及最小值和最大值处的项目计数。在MS Access中使用SQL。

输入项

tblItem

|    EntryDate    |   ReceivedDate   |
--------------------------------------
|   01/01/2016    |    16/12/2015    |
|   01/01/2016    |    15/12/2015    |
|   01/01/2016    |    10/12/2015    |
|   01/01/2016    |    10/12/2015    |
|   01/01/2016    |    10/12/2015    |
|   01/01/2016    |    10/12/2015    |
|   15/01/2016    |    05/01/2016    |
|   15/01/2016    |    05/01/2016    |
|   15/01/2016    |    04/01/2016    |
|   15/01/2016    |    03/01/2016    |
|   15/01/2016    |    03/01/2016    |
|   15/01/2016    |    03/01/2016    |
Run Code Online (Sandbox Code Playgroud)

当前查询

SELECT tblItem.EntryDate, 
Min(tblItem.ReceivedDate) AS MinReceivedDate, 
Max(tblItem.ReceivedDate) AS MaxReceivedDate …
Run Code Online (Sandbox Code Playgroud)

sql ms-access correlated-subquery

5
推荐指数
1
解决办法
66
查看次数

R的滚动日期范围内的唯一值的计数

这个问题已经有了SQL答案,我能够在R中实现该解决方案sqldf.但是,我一直无法找到实现它的方法data.table.

问题是如果数据如下所示,计算滚动日期范围内一列的不同值,例如(并直接引用链接的问题):

Date   | email 
-------+----------------
1/1/12 | test@test.com
1/1/12 | test1@test.com
1/1/12 | test2@test.com
1/2/12 | test1@test.com
1/2/12 | test2@test.com
1/3/12 | test@test.com
1/4/12 | test@test.com
1/5/12 | test@test.com
1/5/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test1@test.com
Run Code Online (Sandbox Code Playgroud)

如果我们使用3天的日期,那么结果集看起来就像这样

date   | count(distinct email)
-------+------
1/1/12 | 3
1/2/12 | 3
1/3/12 | 3
1/4/12 | 3
1/5/12 | 2
1/6/12 | 2
Run Code Online (Sandbox Code Playgroud)

以下是使用data.table以下命令在R中创建相同数据的代码:

date <- as.Date(c('2012-01-01','2012-01-01','2012-01-01', …
Run Code Online (Sandbox Code Playgroud)

sql r time-series correlated-subquery data.table

5
推荐指数
1
解决办法
939
查看次数