为什么我的SQL语句在我从日期选择器指定输出日期之前将数据显示到表中

时间:2015-01-16 08:42:49

标签: php mysql sql sql-server-2008

我有一个问题,我试图解决前一段时间。  我有一张桌子,显示无访问公司名称和郊区。 因此,我在单个SQL查询中使用2 select语句来获取我想要的输出。我可以从表格中看到我的数据,我从日期选择器中选择日期范围。

现在我的问题是:我不想看到数据自动填充到表中。 每当我进入页面时,表格中都已显示数据,而我没有从日期选择器中选择日期。

有没有办法解决这个问题? 请指教。

这是我的SQL声明,我认为是问题,但我不知道如何解决它。

SELECT Name, Suburb 
FROM Client_table, user
     WHERE Client_Id NOT IN 
           (SELECT Distinct client_fk AS callesmade FROM Visits_table
           WHERE Start_Date >= '".$Fdate."')
AND 
    Branch = area
AND username = '".$_SESSION["username"]."'
ORDER BY Suburb, Name"

我的SQL语句有什么问题?

请有人帮忙!

谢谢

2 个答案:

答案 0 :(得分:1)

如果你想在第一次加载页面或刷新你的表时应该加载空白,那么你可以使用这个条件

if(isset($Fdate) && $Fdate !='')
{
SELECT Name, Suburb FROM Client_table, user WHERE Client_Id NOT IN (SELECT Distinct client_fk AS callesmade FROM Visits_table WHERE Start_Date >= '".$Fdate."') AND Branch = area AND username = '".$_SESSION["username"]."' ORDER BY Suburb, Name"
}

此条件将检查如果用户从datepicker中选择了日期,那么它将触发查询。

答案 1 :(得分:0)

可能是旧的NOT IN问题......小心来自子选择的NULL,因为如果你有任何NOT IN将是false,你的查询将返回0行。

例如,您可以改为使用NOT EXISTS:

SELECT Name, Suburb
FROM Client_table, user
WHERE Client_Id NOT IN (SELECT client_fk
                        FROM Visits_table
                        WHERE client_fk = Client_Id AND Start_Date >= '".$Fdate."')
 AND Branch = area AND username = '".$_SESSION["username"]."'
 ORDER BY Suburb, Name"

或者只是确保没有client_fk为null:

SELECT Name, Suburb
FROM Client_table, user
WHERE Client_Id NOT IN (SELECT client_fk
                        FROM Visits_table
                        WHERE client_fk IS NOT NULL
                          and Start_Date >= '".$Fdate."')
  AND Branch = area
  AND username = '".$_SESSION["username"]."'
ORDER BY Suburb, Name