0

私のmysqlクエリを取得して、サイト上の18〜25歳のすべてのユーザーを表示しようとしていますが、現在それを行っていますが、同じ結果/同じユーザーを約20回エコーアウトしています。

クエリで各結果/各ユーザーを1回だけ表示したい。誰かがどこが間違っているのか教えてください。ありがとうございます。

年齢は現在、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

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, table2、代わりにステートメントを使用する必要がある whereを使用するためです。JOIN

于 2013-02-15T19:32:04.547 に答える
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 に答える