Подсчет строк в группе SQL

#php #mysql

#php #mysql

Вопрос:

У меня есть скрипт, который я хочу разместить на панели мониторинга. SQL работает и группирует элементы в while, и он отображается на панели мониторинга правильно. Однако я также хочу, чтобы количество отображалось.

Итак, если SQL группируется, как я могу подсчитать строки, которые он возвращает, чтобы я мог повторить кол-во в моей таблице для каждой строки. Это мой код.

 <?php
    $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "dbname";
    $custid = $row['CustomerID'];
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql1 = "SELECT * FROM stock 
            JOIN hardware ON stock.HardwareID = hardware.HardwareID
            WHERE stock.CustomerID = $custid GROUP BY stock.HardwareID";
    $result1 = $conn->query($sql1);
    if ($result1->num_rows > 0) {
        // output data of each row
        while($row1 = $result1->fetch_assoc()) {
            echo "<tr>";
            echo "<td>".$row1['Hardware']."</td>";
            echo "<td></td>";
            echo "</tr>";
        }
    }
?>
  

Итак, цель состоит в том, чтобы иметь строку

 echo "<td></td>";
  

В нем есть переменная, которая показывает количество для каждой сгруппированной строки.

Комментарии:

1. MySQL или SQL Server? Пожалуйста, будьте более осторожны при выборе тегов.

2. Извините, исправил это.

Ответ №1:

вы можете использовать этот запрос, группа по запросу должна выбирать и предоставлять агрегацию, здесь я предоставил количество, если вам требуется какой-то соответствующий столбец, вы можете изменить его соответствующим образом…

             <?php
                $servername = "localhost";
                $username = "root";
                $password = "root";
                $dbname = "dbname";

                $custid = $row['CustomerID'];

                // Create connection
                $conn = new mysqli($servername, $username, $password, $dbname);
                // Check connection
                if ($conn->connect_error) {
                    die("Connection failed: " . $conn->connect_error);
                } 
                $sql1 = "SELECT stock.Hardwareid, count(*) as CountHardware FROM stock 
                JOIN hardware ON stock.HardwareID = hardware.HardwareID
                WHERE stock.CustomerID = $custid GROUP BY stock.HardwareID";
                    $result1 = $conn->query($sql1);

                if ($result1->num_rows > 0) {
                    // output data of each row
                    while($row1 = $result1->fetch_assoc()) {
                        echo "<tr>";
                        echo "<td>".$row1['Hardware']."</td>";
                        echo "<td></td>";
                        echo "</tr>";
                    }
                }
            ?>
  

Комментарии:

1. Это работает очень хорошо. Мне просто нужно было внести одно изменение. $sql1 = «ВЫБРАТЬ запас. Hardwareid, аппаратное обеспечение. Аппаратное обеспечение, считайте (*) как количество аппаратного ОБЕСПЕЧЕНИЯ ИЗ запаса, ПРИСОЕДИНЯЙТЕСЬ К оборудованию НА складе. HardwareID = аппаратное обеспечение. HardwareID ГДЕ stock. CustomerID = $custid ГРУППА ПО запасу. HardwareID»; Но примет этот ответ. Спасибо