HILFE - bin ein Anfänger

ivoschulze

Grünschnabel
Meine Tabelle aus einer Besucherstatistik-DB beinhaltet:
--------------------
typ | wert | anzahl
--------------------
language | de | 100
language | en | 150
language | de | 100
language | us | 200
language | de | 100
language | de | 100
language | us | 100
language | en | 100
usw...

Ich möchte nun eine Abrafe erstellen, welche wie folgt ausgegeben werden soll:

Land: "de" insgesamt "400" Besucher
Land: "en" insgesamt "250" Besucher
Land: "us" insgesamt "300" Besucher

Was ich mir erarbeitet habe ich folgende Abrage:
<?PHP

$db_host = 'localhost'; // Datenbankserver (z.b localhost)
$db_user = 'xyz'; // Benutzername
$db_pass = 'passwort; // Passwort
$db_name = 'db1027643-0003'; // Datenbankname

// mit der Datenbank verbinden:
$serverID = @mysql_connect($db_host, $db_user, $db_pass);
if(!$serverID) {echo "Der DB Server ist im Moment leider nicht erreichbar!";}
$datenbank=@mysql_select_db($db_name, $serverID);

$abfrage = "SELECT SUM(anzahl), typ, wert, anzahl from statistik_locale_information WHERE typ=CONVERT(_utf8 'language' USING latin1) COLLATE latin1_german2_ci AND wert=CONVERT(_utf8 'de' USING latin1) COLLATE latin1_german2_ci GROUP BY typ ORDER BY typ LIMIT 0 , 30";
$ergebnis = mysql_query($abfrage);

while($row=mysql_fetch_array($ergebnis))
{
$typ=$row['typ'];
$wert=$row['wert'];
$anzahl=$row['anzahl'];
$summe=$row['SUM(anzahl)'];

echo"Land: \"$wert\" insgesamt: \"$summe\"";
}

?>

Vielen Dank für Eure Hilfe
 
Funktioniert deine Abfrage denn? Hast du die einfach mal direkt ohne PHP auf der Datenbank ausprobiert?

Und nutze bitte in Zukunft einen Aussagekräftigen Titel für deine Frage, das erhöht die Chance das jemand überhaupt antwortet. Info dazu: Wie man Fragen richtig stellt
 
Ja, ich glaube - ich habe mich falsch ausgedrückt. Ich versuche es daher mal anders:

Ich verwende das chCounter-Script und dort werden Besucher unterschiedlicher Sprachen gezählt. Ich möchte jetzt eigentlich nur an einer anderen Stelle meiner HP eine kleine Abfrage erstellen, die einerseits alle gezählten Sprachen ausgibt, und andererseit mir die Gesamtanzahl wiedergibt.

Die Tabelle des chCounter für diese Funktion sieht so aus:
--------------------
typ | wert | anzahl
--------------------
language | de | 100
language | en | 150
language | de | 100
language | us | 200
language | de | 100
language | de | 100
language | us | 100
language | en | 100
usw...

Meine Abfrage wie oben funktioniert, aber eben nur für "de". Meine Frage ist nun:
Wie bekomme ich das so hin, dass für alle Sprachen wie en/us/de die Geamtanzahl ermittelt wird.

Ich bin halt ein Laie, daher entschuldigt meine primitiv gestellt Frage!
 
Deine Abfrage oben ist doch wunderbar. Jetzt lasse einfach den Teil weg der die Sprache auf 'de' einschränkt:

SQL:
SELECT SUM(anzahl), typ, wert from statistik_locale_information 
WHERE typ=CONVERT(_utf8 'language' USING latin1) COLLATE latin1_german2_ci 
GROUP BY typ ORDER BY wert

Damit bekommst du dann alle Sprachen mit ihrer Summe ausgegeben.
 
Also erstmal tausend Dank für Eure Hilfe, vorallem weil diese so schnell ist!!

Hallo zeja, ich habe Deine Abfrage im phpMyAdmin mal ausprobiert und mir wird klar, dass ich mit meiner Abfrage ja schon vorweg mit "de" eingegrenzt habe.

Mit Deiner Abfrage funktioniert dass noch nicht so wie gewollt und habe zwei Screenshots gemacht:

1. tabelle.gif zeigt die Struktur der Tabelle an
2. abfrageergebnis.gif zeigt das Ergebnis Deiner Abfrage

Es wurde nicht der Gesamtwert für jede Sprache ausgegeben, sondern wohl wahrscheinlich für alle Sparchen (habs jetzt nicht nachgerechnet), trotzdem steht da nur der Wert "de" !?
 

Anhänge

  • 26429attachment.gif
    26429attachment.gif
    19,7 KB · Aufrufe: 13
  • 26430attachment.jpg
    26430attachment.jpg
    40,3 KB · Aufrufe: 13
Dummer Fehler von mir, tut mir leid:
SQL:
SELECT SUM(anzahl), typ, wert FROM statistik_locale_information
WHERE typ=CONVERT(_utf8 'language' USING latin1) COLLATE latin1_german2_ci
GROUP BY wert ORDER BY wert

Natürlich muss nach der Spalte gruppiert werden in der die Sprache steht, denn diese Ergebnisse sollen ja zusammengefasst werden :)

Und lass besser das LIMIT weg, sonst wunderst du dich irgendwann warum du nicht alle Länder summiert bekommst.
 
Ich habe noch eine hoffentlich bescheidene Frage:

Wenn ich das Ergebnis für jede Sprache prozentual ausgeben möchte, wie müßte ich das umschreiben.


Vielen Dank für die Antwort
 

Neue Beiträge

Zurück