0

有人可以帮助我试图让我的 mysql 查询显示我网站上 18-25 岁的所有用户,并且它目前正在这样做,但它回显了大约 20 次相同的结果/相同的用户。

我只想在查询中显示每个结果/每个用户一次。有人可以告诉我我哪里出错了谢谢。

年龄当前在数据库中记录为 varchar (11) 我使用年龄与我的出生日期分开,这是一个时间戳,但我需要将年龄设置为与出生日期分开,所以我使用 varchar 列。

所以要明确的是,我试图显示 25 岁以下的所有用户(不会复制结果并在每个结果中回显一个以上的用户)

功能:

function categories_agegroup_under25() {
            global $connection;
            $query = "SELECT *
                        FROM ptb_users, ptb_stats
                        WHERE ptb_users.account_type = \"User\" AND ptb_users.account_status = \"Active\" AND ptb_stats.user_id = ptb_users.id
                        AND ptb_stats.user_age='18' OR  ptb_stats.user_age='19' OR ptb_stats.user_age='21' OR  ptb_stats.user_age='22' OR ptb_stats.user_age='23' OR  ptb_stats.user_age='24' OR  ptb_stats.user_age='25'           

                        ORDER BY ptb_stats.user_age DESC
                        LIMIT 0,40";
            $categories_under25_set = mysql_query($query, $connection);
            confirm_query($categories_under25_set);
            return $categories_under25_set;
        }

php:

 <?php
        $categories_under25_set = categories_agegroup_under25();
        while ($age = mysql_fetch_array($categories_under25_set)) {


            echo"
            <div class=\"boxgrid caption\">
            <a href=\"profile.php?id={$age['id']}\"><img width=140px height= 180px src=\"data/photos/{$age['id']}/_default.jpg\"/></a>
            <div class=\"cover boxcaption\">
            <h58> {$age['display_name']}, {$age['user_age']}</h58>
            </div>
            </div>";
        }
    ?>
4

3 回答 3

0

你有冲突ANDOR

尝试这个

   SELECT *
                    FROM ptb_users, ptb_stats
                    WHERE ptb_users.account_type = \"User\" 
                    AND ptb_users.account_status = \"Active\" 
                    AND ptb_stats.user_id = ptb_users.id
                    AND ptb_stats.user_age in (18,19,20,21,22,23,24,25)        
                    GROUP BY ptb_stats.user_id
                    ORDER BY ptb_stats.user_age DESC
                    LIMIT 0,40
于 2013-02-15T19:35:20.680 回答
0

ptb_stats.user_age 在 18 到 25 之间 http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

于 2013-02-15T19:31:57.417 回答
0

尝试类似的东西

SELECT DISTINCT username FROM ...

另外,您获得重复结果的原因是因为您使用FROM table1, table2where 而应该使用JOIN语句,因为第一个语句将执行表交叉产品。

于 2013-02-15T19:32:04.547 回答