Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL。按年龄范围划分的统计用户表_Sql - Fatal编程技术网

SQL。按年龄范围划分的统计用户表

SQL。按年龄范围划分的统计用户表,sql,Sql,我有一个表,上面有我的平台用户的出生日期,我需要为后台统计项目按18-25岁、25-35岁等年龄段对他们进行排序。它们已经按性别分类了 这是我的密码: public function GenreByAge() { $date_day = new datetime(); $date_day = $date_day->format('Y-m-d'); $sql = "SELECT count(*) as nb, id_thematiqu

我有一个表,上面有我的平台用户的出生日期,我需要为后台统计项目按18-25岁、25-35岁等年龄段对他们进行排序。它们已经按性别分类了

这是我的密码:

public function GenreByAge() {


        $date_day = new datetime();
        $date_day = $date_day->format('Y-m-d');


        $sql = "SELECT count(*)  as nb, id_thematique, dn 
                FROM qr_thematique_preco q 
                INNER JOIN users as u ON u.id_user = q.id_membre
                WHERE u.id_part = '$this->id_part'
                AND u.sexe = '$this->genre'";


       switch ($this->tranche_age) {

            case 1:

                $sql .= AND DATE_FORMAT(dn,'%Y-%m-%d') <= date_sub(curdate(), INTERVAL 18 YEAR) 
                        AND DATE_FORMAT(dn,'%Y-%m-%d') > date_sub(curdate(), INTERVAL 26 YEAR);

                break;


            case 2:

                $sql .= AND dn <= date_sub(curdate(), INTERVAL 26 YEAR) 
                        AND dn > date_sub(curdate(), INTERVAL 36 YEAR);

                break;


            case 3:

                $sql .= AND dn <= date_sub(curdate(), INTERVAL 36 YEAR) 
                        AND dn > date_sub(curdate(), INTERVAL 46 YEAR);

                break;


            case 4:

                $sql .= AND dn <= date_sub(curdate(), INTERVAL 46 YEAR) 
                        AND dn > date_sub(curdate(), INTERVAL 56 YEAR);

                break;


            case 5:

                $sql .= AND dn <= date_sub(curdate(), INTERVAL 56 YEAR) 
                        AND dn > date_sub(curdate(), INTERVAL 66 YEAR);

                break;
但是查询不会返回任何与我的数据有关的内容

谢谢你的帮助。

你把WHERE条件写错了,它们是相互排斥的

例如,出生日期在过去不能同时少于18年和超过26年

AND DATE_FORMAT(dn,'%Y-%m-%d') <= date_sub(curdate(), INTERVAL 18 YEAR) 
AND DATE_FORMAT(dn,'%Y-%m-%d') > date_sub(curdate(), INTERVAL 26 YEAR);
或者,您可以将现有条件中的规则切换为:

AND DATE_FORMAT(dn,'%Y-%m-%d') >= date_sub(curdate(), INTERVAL 18 YEAR) 
AND DATE_FORMAT(dn,'%Y-%m-%d') < date_sub(curdate(), INTERVAL 26 YEAR);

它起作用了。非常感谢你。我要为这样一个明显的错误永远责备自己!!“我想我会慢慢喝咖啡的。”马泰乌斯说,“好吧,这只是一个小小的变化。请不要忘记奖励。@mateus或可能增加咖啡因:@mateus如果这个答案有助于您解决问题,请不要忘记将问题升级/标记为正确。您使用的是哪种数据库管理系统?
AND DATE_FORMAT(dn,'%Y-%m-%d') >= date_sub(curdate(), INTERVAL 18 YEAR) 
AND DATE_FORMAT(dn,'%Y-%m-%d') < date_sub(curdate(), INTERVAL 26 YEAR);