Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
返回太多行的嵌套SQL查询_Sql_Sql Server - Fatal编程技术网

返回太多行的嵌套SQL查询

返回太多行的嵌套SQL查询,sql,sql-server,Sql,Sql Server,我有两张表——事件和今晚,它们驱动了一个季节性事件列表系统。事件保存所有季节性事件级别的数据,而今晚保存与事件将运行的每个单独日期相关的数据 我需要以嵌套的方式查询这两个表,首先从今晚表中筛选出许多行,然后根据之前的今晚级别筛选只显示一次每个事件 我目前正在尝试这样做,首先从今晚表中选择所有相关的事件级别ID,然后使用这些ID返回相关的事件行。这些行需要连接到今晚表和另一个POI表,以返回所有相关数据 问题是,由于今晚表上的连接,我基于ID的方法为每个事件返回多行。我显然走错了路,但不知道如何补

我有两张表——事件和今晚,它们驱动了一个季节性事件列表系统。事件保存所有季节性事件级别的数据,而今晚保存与事件将运行的每个单独日期相关的数据

我需要以嵌套的方式查询这两个表,首先从今晚表中筛选出许多行,然后根据之前的今晚级别筛选只显示一次每个事件

我目前正在尝试这样做,首先从今晚表中选择所有相关的事件级别ID,然后使用这些ID返回相关的事件行。这些行需要连接到今晚表和另一个POI表,以返回所有相关数据

问题是,由于今晚表上的连接,我基于ID的方法为每个事件返回多行。我显然走错了路,但不知道如何补救。你能给我一些建议吗

谢谢

PJ


您的数据关系不清楚,但在我看来,一个事件可能在不同的时间有多个实例,这使得您的查询逻辑错误。当您在子查询之外加入今晚表时,您没有日期过滤器,这将带来所有夜晚的匹配事件。尝试摆脱子查询并直接连接三个表。感谢您的反馈。再看一次,当我将所有表直接连接在一起时,这个问题仍然存在。当今晚表中的每个事件都有多个日期行时,我似乎无法对每个事件只筛选一行
SELECT 
    Events.ID AS ID, 
    Events.EventName AS EventName,
    Events.EventAlias AS EventAlias, 
    Events.EntryPrice AS EventPrice, 
    Events.TicketPrice AS TicketPriceText, 
    Events.MusicStyle AS MusicStyle, 
    Events.EventType AS EventType, 
    Events.CanSellEntry AS EventsCanSellEntry,
    Tonight.CanSellEntry AS TonightCanSellEntry
FROM Events
JOIN Tonight AS Tonight ON Events.Id = Tonight.Event_Id 
WHERE Events.ID in 
(
    SELECT DISTINCT Events.ID AS ID 
    FROM Events 
    JOIN PlacesOfInterest AS PoI ON Events.POI_Id = PoI.Id 
    JOIN Tonight AS Tonight ON Events.Id = Tonight.Event_Id 
    WHERE 
        Tonight.EventDate >= '30-May-2015' AND 
        Tonight.EventDate <= '31-Dec-2015' AND 
        Events.CanSellEntry <> 'no' AND 
        Events.EntryPrice > 0 AND 
        Tonight.CanSellEntry <> 'no' AND 
        Events.EventType = 'night'
) 
ORDER BY Events.EventName