1

我有一个数据库,其中包含一些已售出的房产。他们每个人都有一个与之相关的日期,这是我需要用来缩小搜索结果的日期。

基本上我有一个查询:

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

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

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

谢谢!

4

3 回答 3

3

您可以使用 SQLAND运算符。

文档: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 数据库中的日期格式,您必须在时间戳或日期时间中计算它。

于 2013-08-12T17:15:29.517 回答
3

您不需要组合语句,只需使用布尔运算符SELECT创建一个更复杂的子句:WHEREAND

$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']) . "'.

于 2013-08-12T17:16:28.773 回答
-1

组合多个 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);
于 2013-08-12T17:14:59.683 回答