Avatar billede fatter_keine Nybegynder
21. august 2003 - 10:50 Der er 10 kommentarer og
1 løsning

Brug af DISTINCT i denne situation?

Jeg skal ha lavet et script der tager alt fra fra "Sider" i MySQL og opsætter det i en skema...

Sider indeholder:

"sider" og "ip"

Scriptet skal så opsætte et distinct omkring "sider" og skrive udfor denne hvor mange der er af hver...
Avatar billede jakoba Nybegynder
21. august 2003 - 11:23 #1
Nå du båd vil have en værdi og info om hvormange gnage den værdi gentages er det ikke distinct du skal bruge men GROUP BY
fx:
    SELECT sider, COUNT(*) as antalsider
    FROM  tabelnavn
    GROUP BY sider

nu kommer der kun een række for hver forskellig værdi i sider.
Avatar billede fatter_keine Nybegynder
21. august 2003 - 11:51 #2
Ja okay, men hvordan skal scriptet se ud ???

Den skal jo også have et echo...
Avatar billede jakoba Nybegynder
21. august 2003 - 12:00 #3
Jeg tør ikke gætte på dit script, på basis af de få oplysninger du giver. Bare det med at 'sider' var navnet på et felt i din database var et gæt.

Hvis du prøver at give en udførlig beskrivelse af hvad du vil gøre, kan det være at jeg (eller en anden) kan fortælle dig hvordan.

mvh JakobA
Avatar billede fatter_keine Nybegynder
21. august 2003 - 12:35 #4
Den skal se sådan ud:

SELECT sider, COUNT(*) as antalsider FROM  sider GROUP BY sider

Men hvordan laves det så sådan at det vises ???

Hvis fx. sider er følgende:

"1"
"2"
"1"
"1"

Skal den skrive:

1 : 3

2 : 1
Avatar billede jakoba Nybegynder
21. august 2003 - 12:50 #5
I dit oprindelige spm snakker du om en 'ip' hvad har den med det at gøre ?
Skal den skrives nogensteder ?
Skal der skelnes på en eller anden måde der hvor feltet 'sider' har samme værdi, men værdien i 'ip' er forakellig ?
Avatar billede fatter_keine Nybegynder
21. august 2003 - 12:51 #6
Nej den skal ikke bruges til noget, en fejl at jeg skrev den...
Avatar billede jakoba Nybegynder
21. august 2003 - 12:59 #7
OK.

<?php

// her står kode til at forbinde til din database som du plejer.

$sql_kommando = "
    SELECT sider, COUNT(*) as antalsider
    FROM  sider
    GROUP BY sider
    ORDER BY sider ASC
";
    // ORDER BY sørger for at sidenværdierne kommer i stigende (ASCending) rækkefølge

$resultat = mysql_query( $sql_kommando ) or die( mysql_error() );

while ( $row = mysql_fetch_array( $resultat ) ) {
    echo $row['sider'] ." : " .$row['antalsider'] ."<br>";
}

?>

mvh JakobA
Avatar billede jakoba Nybegynder
21. august 2003 - 13:09 #8
Jeg er lidt bekymret over at din tabel hedder præcis det samme som et af felterne i den tabel. Det går sandsynligvis godt, men prøv alligevel at undgå den slags dobbel brug af samme navn. Computere er nemme at forvirre.
Avatar billede fatter_keine Nybegynder
21. august 2003 - 14:02 #9
Jeg skal lige spørge om en ting mere... kan man få den til at tælle hvor mange rækker der er ialt sammen med det andet ???

Jeg skal nemlig regne % ud for hver også...
Avatar billede jakoba Nybegynder
21. august 2003 - 14:15 #10
Desværre nej. men iløbet af whileløkken kan du jo selv tælle sammen:

$siderialt = 0;
while ( $row = mysql_fetch_array( $resultat ) ) {
    $siderialt += $row['antalsider'];
    echo $row['sider'] ." : " .$row['antalsider'] ."<br>";
}
echo "Samlet antal sider: " .$siderialt ."<br>";
Avatar billede jakoba Nybegynder
21. august 2003 - 14:35 #11
Næe forresten, for at udregne procenter for hver side må du kende det samlede antal FØR du regner på hver side.

$siderialt = 0;
$hukommelse = array();  // husker rækkerne så vi kan gennemgå dem igen bagefter
while ( $row = mysql_fetch_array( $resultat ) ) {
    $siderialt += $row['antalsider'];
    $hukummelse[] = $row;
}
    // nu har $siderialt den korrekte værdi. Så vi kan beregne procenter
for ( $i=0; $i<count( $hukommelse ); $i++ ) {
    $procentverdi = 100 * $hukommelse[$i]['antalsider'] / $siderialt;
    echo $hukommelse[$i]['sider'] ." : " .$hukommelse[$i]['antalsider'];
    echo " - " .$procentværdi ."<br>";
}
echo "Samlet antal sider: " .$siderialt ."<br>";

for at begrænse den udregnede procent til et passende antal decimaler kan du benytte funktionen number_format http://dk.php.net/manual/en/function.number-format.php

tak for pts

mvh JakobA
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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

IT-JOB

BEC Financial Technologies

Senior Platform/System Engineer

Politiets Efterretningstjeneste

DevOps engineer til dataanalyse i PET

Politiets Efterretningstjeneste

Netværksspecialist til IT i PET

Politiets Efterretningstjeneste

Data Engineer til at udvikle PET's dataplatform