mysql
  • union
  • 2015-05-19 3 views 0 likes 
    0

    Это первый раз, когда я пытаюсь использовать оператор UNION MySQL, но следующий код дает мне ошибку «неопределенный индекс: женщина».Использование агрегатных функций MySQL и оператора UNION вместе

    $sql = "(SELECT COUNT(gender) AS male FROM members WHERE gender='m') 
         UNION 
         (SELECT COUNT(gender) AS female FROM members WHERE gender='f') 
         UNION 
         (SELECT COUNT(gender) AS no_gender FROM members WHERE gender='n') 
         "; 
        $results = $con->query($sql); 
        if ($row = $results->fetch_assoc()) { 
         print $row["male"] . "<br>"; 
         print $row["female"] . "<br>"; 
         print $row["no_gender"] . "<br>"; 
        } 
    

    Таким образом, на основе решения по fancyPants, следующие работали:

    print "<table>"; 
    $sql = "SELECT gender, COUNT(1) AS no_of_genders 
         FROM members 
         WHERE user_id = $user_id 
         GROUP BY gender"; 
    $results = $con->query($sql); 
    while ($row = $results->fetch_assoc()) { 
        print "<tr><td>" . $row["gender"] . "</td><td>" . $row["no_of_genders"] . "</td></tr>"; 
    } 
    print "</table>"; 
    
    +1

    один '' user_id'' с несколькими полами ???? –

    +1

    В одном объединении один столбец имеет только одно имя. Итак, все ваши подсчеты находятся в столбце 'male', но в разных строках. – Jens

    +0

    @ Ravinder, no_gender - член, где не человек, а какая-то компания или учреждение. –

    ответ

    0

    Вы должны использовать пункт GROUP BY.

    SELECT gender, 
    COUNT(1) AS no_of_members 
    FROM members 
    GROUP BY gender; 
    

    Это производит столько строк, сколько в вашем столе есть разные гендерные группы.

    +0

    Каждый раз, когда я напоминаю себе, что мне нужно больше узнать SQL, но я забываю его до следующего раза. –

     Смежные вопросы

    • Нет связанных вопросов^_^