简体   繁体   English

实现mysql交集

[英]Implementing mysql intersection

I'm trying to do a filter search functionality in codeigniter. 我正在尝试在codeigniter中执行过滤器搜索功能。 I have a table named products and my system has the functionality to filter these products by category and by date. 我有一个名为产品的表,我的系统具有按类别和日期过滤这些产品的功能。 I have a mysql code in mind which looks something like this: 我在心中有一个看起来像这样的mysql代码:

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

So it should return records (via id) from the same table named products. 因此,它应该从同一个名为product的表中返回记录(通过id)。 However, there's no INTERSECT in mysql so I don't know how to do this. 但是,mysql中没有INTERSECT,所以我不知道该怎么做。 Any help would be greatly appreciated! 任何帮助将不胜感激!

This is my code just for the part of the product category 这是我的代码,仅用于产品类别的一部分

$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;

Why wouldn't you just use and ? 您为什么不只使用and

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM