2013-02-15 33 views
0

有人可以帮助我试图让我的MySQL查询显示我的网站上的所有用户是18-25,目前这样做,但它的回声相同的结果/同一用户约20次。mysql函数显示25岁以下的用户?

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

年龄是当前记录在数据库中作为varchar(11)即时通讯使用年龄独立从我的日期brith这是一个time_stamp,但我需要设置的年龄从出生日期分开,所以即时使用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>"; 
     } 
    ?> 
+1

为什么11岁就VARCHAR,而不是一个int(3)? – 2013-02-15 19:32:40

+0

@John这是我在桌子交叉产品之后注意到的第二件事。这需要重写lol – 2013-02-15 19:34:20

+0

有两件事情:1)time_stamp不会显示1970年以前出生的用户。2)存储age *和* DoB是不正确的数据库规范化。 – slugonamission 2013-02-15 19:40:11

回答

0

试着这么做

SELECT DISTINCT username FROM ... 

你也得到重复结果的原因是因为你用FROM table1, table2地方,而不是你应该使用JOIN语句作为第一个语句将执行表积。

0

您有ANDOR

comflict试试这个

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