使用多个SELECT语句缩小结果范围


Using multiple SELECT statements to narrow results

我有一个数据库,里面有一些已经售出的房产。他们每个人都有一个相关的日期,这就是我需要用来缩小搜索结果的范围。

基本上我有一个问题:

$query = "SELECT * from newsales WHERE city = '".$_GET['location']."'";

我需要做的是,从上述查询返回的结果来看,我需要进一步将其缩小到过去90天内。

所以它会找到这个城市,然后只需要得到过去90天的那些。如何组合SELECT语句来缩小结果范围?

谢谢!

您可以使用SQL AND运算符。

文件:http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html

您的查询将超过:

$query = "SELECT * from newsales WHERE city = '".$_GET['location']."' AND date > '".$oldestdate."';

$date设置为旧日期,在您的情况下为今天之前90天。根据mysql数据库中的日期格式,您必须在时间戳或日期时间中进行计算。

您不需要组合SELECT语句,只需使用布尔AND运算符制作一个更复杂的WHERE子句:

$query = "
    SELECT * 
    FROM newsales 
    WHERE 
        city = '".$_GET['location']."'
        AND date > '".$oldestdate."'
";

我建议你也要阅读SQL注入——如果你像那样直接使用$_GET,有些人可以访问你的网站,基本上输入他们想要的任何SQL语句。

假设您使用的是mysqli_*函数(它已经取代了mysql_*函数,但大多可以互换使用),最简单的方法是mysqli_real_escape_string(),例如city = '" . mysqli_real_escape_string($_GET['location']) . "'

组合多个SELECT语句的结果意味着您需要使用UNION。请查看以下内容:http://dev.mysql.com/doc/refman/5.0/en/union.html

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);