【问题标题】:Implementing mysql intersection实现mysql交集
【发布时间】:2016-03-25 15:44:29
【问题描述】:

我正在尝试在 codeigniter 中执行过滤搜索功能。我有一个名为 products 的表,我的系统具有按类别和日期过滤这些产品的功能。我想到了一个 mysql 代码,它看起来像这样:

SELECT * from products WHERE product_category='Cloth'
INTERSECT
SELECT * from products WHERE ('insert date logic here')

所以它应该从同一个名为 products 的表中返回记录(通过 id)。但是,mysql 中没有 INTERSECT,所以我不知道该怎么做。任何帮助将不胜感激!

这是我的代码,仅用于产品类别的一部分

$this->db->limit($limit,$start);
    $query = $this->db->query('SELECT * from product_advertised WHERE quantity > 0 AND prodcatid='.$prodcats[0].' LIMIT '.$start.','.$limit);

    if(sizeof($prodcats > 1)) {
        $query_str = "SELECT * FROM product_advertised WHERE quantity>0 AND ";
        $str="";
        for($i = 0;$i < sizeof($prodcats);$i++) {
            if($i != sizeof($prodcats)-1) {
                $str = $str. "prodcatid=".$prodcats[$i]." OR ";
            }
            else {
                $str = $str. "prodcatid=".$prodcats[$i]." LIMIT ".$start.",".$limit;
            }
        }
        $query_str .= $str;
        $query = $this->db->query($query_str);
    }
    if($query->num_rows() > 0) {
        foreach($query->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
    return false;

【问题讨论】:

    标签: mysql sql intersection


    【解决方案1】:

    你为什么不直接使用and

    SELECT *
    from products
    WHERE product_category = 'Cloth' AND
          ('insert date logic here');
    

    【讨论】:

    • 这是我的代码,仅用于部分产品类别,还没有日期。它已经有点复杂了......所以我不知道是否只做一个简单的并且会做:/(在编辑中)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2018-03-05
    • 2017-11-27
    • 2013-01-04
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多