我有一个问题,我刚才想解决。 我有一个表格,显示禁止访问的公司名称和郊区。因此,我在单个 SQL 查询中使用 2 个选择语句来获取我想要的输出。我可以从表中查看我的数据,我从日期选择器中选择日期范围。
现在我的问题是:我不希望看到数据本身自动填充到表中。每当我转到该页面时,表中已经显示数据,而无需我从日期选择器中选择日期。
有没有办法解决这个问题?请指教。
这是我的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 语句有什么问题?
请有人帮忙!
谢谢
在第一次加载页面或刷新时加载表格时加载为空白,则可以使用此条件
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"
}
此条件将检查如果用户从日期选择器中选择日期,它将触发查询。
可能是旧的 NOT IN 问题...当心子选择中的 NULL,因为如果您有任何 NOT IN 将是假的,并且您的查询将返回 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为空:
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