Из 3 запросов - 1

KoLoB2006

Турист
Credits
0
Нужно вывести список онлайн пользователей по полу. Теоритически я это сделал, но как сделать это всё одним запросом?

Таблица Users - поля ID (Номер),Nick(Ник),Sex(Пол)
Таблица Online - поля ID (Номер)


<tr><td class=header>Список пользователей</td></tr>";
echo "</table></td></tr></table>";
$result = mysql_query("select users.id, users.nick From online, users where online.id=users.id and users.sex='m';");
$m=mysql_num_rows($result);
echo "<font size=+0>Мужчины $m: </font><HR WIDTH=100%>";
for($i=0; $i<mysql_num_rows($result); $i++){
$nick = mysql_result($result, $i, "nick");
$id = mysql_result($result, $i, "id");
echo "<a href=javascript:user('$nick')>$nick</a><br>";
}
$result = mysql_query("select users.nick From online, users where online.id=users.id and users.sex='f';");
$f=mysql_num_rows($result);
echo "<font size=+0>Женщины $f: </font><HR WIDTH=100%>" ;
for($i=0; $i<mysql_num_rows($result); $i++){
$nick = mysql_result($result, $i, "nick");
echo "<a href=javascript:user('$nick')>$nick</a><br>";
}
$result = mysql_query("select users.nick From online, users where online.id=users.id and users.sex='0';");
$oth=mysql_num_rows($result);
echo "<font size=+0>Остальные $oth: </font><HR WIDTH=100%>" ;
for($i=0; $i<mysql_num_rows($result); $i++){
$nick = mysql_result($result, $i, "nick");
echo "<a href=javascript:user('$nick')>$nick</a><br>";
 

jonjonson

Турист
Credits
0
Как-нибудь так...
PHP:
$sql_string = "SELECT users.id AS id, users.nick AS nick, users.sex AS sex".
              " FROM online, users".
              " WHERE online.id=users.id";

$result = mysql_query($sql_string);
if (!$result) die('MySQL Error: '.mysql_error());

$sex = array(
    'm'=> array('sex'=>'Мужчины',   'count'=>0, 'text'=>''),
    'f'=> array('sex'=>'Женщины',   'count'=>0, 'text'=>''),
    '0'=> array('sex'=>'Остальные', 'count'=>0, 'text'=>''),
    );
while ($user_info = mysql_fetch_assoc($result)) {
    $sex[$user_info['sex']]['count'] += 1;
    $sex[$user_info['sex']]['text'] .= "<a href=javascript:user('".$user_info['nick'].
        "')>".$user_info['nick']."</a><br>\n";
}

echo "<h1>Список пользователей</h1>\n";
foreach($sex as $info) {
    if ($info['count']) {
        echo "<font size=+0>".$info['sex']." ".$info['count'].": </font><HR WIDTH=100%>\n";
        echo $info['text'];
    }
}
 
Последнее редактирование модератором:
Сверху