使用多个SELECT语句来缩小结果

时间:2013-08-12 17:07:44

标签: php mysql sql

我有一个数据库,其中包含一些已售出的属性。它们每个都有一个与之关联的日期,这是我需要用来缩小搜索结果的范围。

基本上我有一个问题:

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用SQL AND运算符。

Doc: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数据库中的dateformat,你必须在时间戳或日期时间计算它。

答案 1 :(得分:3)

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

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

我也建议您read up on SQL injection - 如果您直接使用$_GET,有人可以访问您的网站并基本输入他们想要的任何SQL语句。

最简单的方法是假设您正在使用mysqli_*函数(已替换mysql_*函数但可以互换使用)mysqli_real_escape_string(),例如city = '" . mysqli_real_escape_string($_GET['location']) . "'。 {{1}}。

答案 2 :(得分:-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);
相关问题