65999
Goto Top

Die meisten gleichen Datensätze aus einer SQL Datenbank anzeigen

Vielleicht könnt ihr mir helfen, bestimmt für euch eine Kleinigkeit.

Ich habe eine Datenbank mit 25 Feldern.

In diese Datenbank sollen Zahlen geschrieben werden. Nachdem die Datenbank anfängt sich zu füllen, möchte ich mit php eine Auswertung machen über die Einträge, die am meisten in der jeweiligen Spalte stehen. Beispiel:
1
3
3
2
1
1


Ergebnis: Die 1

Also soll auf der Seite die 1 erscheinen!

Wie kann ich das umsetzen? Es soll auch gezählt werden, wie oft die 1 in der Datenbank steht?

Ich habe schon alles mögliche probiert, mit count, mit count Array usw. Dann hab ich was hinbekommen, dann liegt es an dem mysql fetch objekt / array usw.

Es wäre sehr nett, wenn mir jemand man kurz die Lösung posten könnte:

<?php

include("db.php");  
$abfrage = mysql_query("SELECT Count(1) FROM tabelle '");   
?>

Content-Key: 142801

Url: https://administrator.de/contentid/142801

Printed on: April 19, 2024 at 05:04 o'clock

Member: maretz
maretz May 14, 2010 at 05:55:18 (UTC)
Goto Top
select count(spaltenname) from tabellenname order by count(spaltenname) limit 1

müsste in etwa gehen
Mitglied: 65999
65999 May 14, 2010, updated at Nov 09, 2016 at 09:25:30 (UTC)
Goto Top
danke dir
Member: it-frosch
it-frosch May 14, 2010, updated at Nov 24, 2016 at 17:07:52 (UTC)
Goto Top
Hallo,

martez hat dir den logischen Aufbau des Befehls geschrieben.

Die genaue SQL Query musst du dir mal nachschlagen da jeder Dialekt (MSSQL,MySQL, FirebirdSQL .....) etwas anderes geschrieben wird.

Für FirebirdSQL wird es so lauten:
Select count(spalte1),spalte1 from tabelle group by spalte1 order by 1 desc

Damit bekommst du eine zweispaltige Ausgabe wobei die erste Spalte die Häufigkeit (count(spalte1)) und die zweite den Wert aus der Spalte1 enthält.
Order by desc gibt nur die Sortierung nach der größten Häufigkeit an.

Deine Aufgabe ist nun das in richtige mySQL - SQL Statments umzubauen.
Mach erst einmal eine php Abfrage über ein einfaches SELECT und wenn das sauber funktioniert dann suche dir den Rest zusammen.

siehe hier: http://dev.mysql.com/doc/refman/5.1/de/example-maximum-column-group.htm ...
Mitglied: 65999
65999 May 14, 2010, updated at Nov 24, 2016 at 17:07:32 (UTC)
Goto Top
Meine abfrage lautet wie folgt:

include("db.php");  
$result = mysql_query('Select count(1) from wiso order by count(1) limit 1');  
$ergebnis = mysql_query($result);

while($row = mysql_fetch_object($ergebnis))
    {
        echo $row->1;
    }

Als Ergebnis habe ich aber stets folgende Fehlermeldung:

Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in ******\httpdocs\abfrage.php on line 25  
Member: maretz
maretz May 14, 2010 at 11:14:14 (UTC)
Goto Top
count(1) -> kann nicht klappen. Da gehört nen Tabellenname rein - und ich glaub (hoffe) nicht das du deine Tabellen einfach durchnummeriert hast...
Mitglied: 65999
65999 May 14, 2010, updated at Nov 09, 2016 at 09:20:33 (UTC)
Goto Top
Ok, dachte der Spaltenname gehört da rein weil ich ja auch nur die Einträge in der spalte zählen wollte.
Member: it-frosch
it-frosch May 14, 2010 at 20:32:36 (UTC)
Goto Top
wie muss ich das nun machen?

um die Hilfestellung für dich etwas abzukürzen, verrate uns doch einmal wie die erste spalte deiner Tabelle heißt.

Sollte die Spalte wirklich den Namen "1" haben dann wäre das suboptimal. face-smile

Wenn ich dich richtig verstanden habe wolltest du ein Ergebnis in der Art:

Wert Spalte 1 | Häufigkeit
1 5
2 1
3 456
4 43

bekommen.

Dann fehlt im deinen Befehl noch die zweite Spalte.
Es müsste wohl doch so etwas wie:

SELECT spalte1,count(spalte1) AS anzahl FROM wiso
GROUP BY spalte1

sein.
Member: Biber
Biber May 15, 2010 at 11:59:50 (UTC)
Goto Top
Moin it-frosch,

Zitat von @it-frosch:
um die Hilfestellung für dich etwas abzukürzen, verrate uns doch einmal wie die erste spalte deiner Tabelle heißt.
Ja nee, auch wenn es eigentlich physikalisch unmöglich ist...
er sagt ja:
Ich habe eine Datenbank mit 25 Feldern (nummeriert von 1 bis 25).

Muss eine ganz, ganz neue DB sein ..*gg

Grüße
Biber
Member: it-frosch
it-frosch May 15, 2010 at 12:19:14 (UTC)
Goto Top
Hallo Biber,

ok, habe es jetzt auch verstanden. face-wink

Dann sollte er sich jetzt wohl am einfachsten seine DB mit einem select auslesen und sich daraus dann
ein insert Script für die neue DB bauen.