Avatar billede Calle5463 Forsker
16. oktober 2016 - 12:38 Der er 5 kommentarer og
1 løsning

Antal forekomster i tabeller

Jeg skal have lavet en lille oversigt over forekomster i tre mysql-tabeller: hovedgrupper, itemgrupper, item.

Har googlet ret meget, men det jeg har fundet får jeg ikke til at virke og meget af det er temmelig "gammel vin" og svj kan se, så er det ikke sådan man vil gøre "i dag"

Tabellerne er ikke store (max et par hundrede item fordelt på ca 15 itemgrupper fordelt på 3-5 hovedgrupper), og trafikken er meget lav, så brug af SELECT og COUNT burde ikke belaste nævneværdigt.

Noget i denne retning
SELECT COUNT(hovedgruppe, itemgruppe, item) FROM hovedgrupper, itemgrupper, item WHERE hovedgrupper.id=itemgrupper.hdgrp_id AND itemgruppe.id=item.itemgrp_id ORDER BY hovedgruppe, itemgruppe
Avatar billede arne_v Ekspert
16. oktober 2016 - 17:33 #1
Maaske:

SELECT hovedgruppe, itemgruppe, COUNT(*)
FROM hovedgrupper, itemgrupper, item
WHERE hovedgrupper.id=itemgrupper.hdgrp_id AND itemgruppe.id=item.itemgrp_id
GROUP BY hovedgruppe, itemgruppe
Avatar billede Calle5463 Forsker
16. oktober 2016 - 21:11 #2
har prøvet med det her - og der må være noget helt galt med min kode -


$servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "cer_project";

    $conn = new mysqli($servername, $username, $password, $dbname);
   
    if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);} else {echo "<br> Forbindelse er ok";}
    return $conn;

    $sql = "SELECT COUNT(item_id) SUM(item_id) FROM item GROUP BY itemgrp_id";
        $result=mysql_query($sql) or die ('Error! yo.');
        while($row = mysql_fetch_array($result)){
            echo ($row['item_id']) . " " . $row['SUM(item_id)'] . "";
            }


Resultat: "Forbindelse er ok"

Resulatet burde være  (talt manuelt) -

itemgruppe_id          item_id
1                          10
2                          11
5                          2
6                          1
7                          2
11                        5
14                        3

Prøvede lige nedenviste kode direkte i phpmyadmin - det gav ovenstånde tal men uden kolonnen "itemgruppe_id

[/]SELECT COUNT(*) FROM item GROUP BY itemgruppe_id[/i] summere men viser ikke itemgruppe_id
Avatar billede Calle5463 Forsker
16. oktober 2016 - 22:14 #3
HUH! Jeg får dette -
(Forbindelse er ok1 2 5 6 7 11 14) (som er itemgrupperne)

- med dette:

require_once("toolbox/connect_to_db.php");

function vis_records($conn) {

    $sql_select = "SELECT itemgruppe_id, COUNT(*) FROM item GROUP BY itemgruppe_id";
    // $sql_select = "SELECT * FROM item";
   
    $result = $conn->query($sql_select);
   
    if ($result->num_rows > 0) {
   
        while($row = $result->fetch_array()){
            echo $row['itemgruppe_id'] . " ";
            }
        } else {
        echo "0 results";
        }
    }
Avatar billede arne_v Ekspert
16. oktober 2016 - 23:20 #4
Du boer altid abgive de felter som du laver GROUP BY paa i din SELECT liste.
Avatar billede Calle5463 Forsker
17. oktober 2016 - 11:58 #5
Dette gjorde det:


$sql_select = "SELECT itemgruppe_id, itemnr, COUNT(itemnr) AS Gruppe FROM item GROUP BY itemgruppe_id ORDER BY itemgruppe_id";
   
    $result = $conn->query($sql_select);
   
    if ($result->num_rows > 0) {
   
        while($row = $result->fetch_array()){
            echo ("Gruppe: " . $row['itemgruppe_id'] . ", antal: " . $row['Gruppe'] . "<br>");
            }
        } else {
        echo "0 results";
        }

Avatar billede Calle5463 Forsker
17. oktober 2016 - 12:03 #6
- eller lidt mere pædagogisk måske -


$sql_select = "SELECT itemgruppe_id, COUNT(itemnr) AS antal_items FROM item GROUP BY itemgruppe_id ORDER BY itemgruppe_id";
   
    $result = $conn->query($sql_select);
   
    if ($result->num_rows > 0) {
   
        while($row = $result->fetch_array()){
            echo ("Gruppe: " . $row['itemgruppe_id'] . ", antal: " . $row['antal_items'] . "<br>");
            }
        } else {
        echo "0 results";
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester