65999

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 '");   
?>
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 142801

Url: https://administrator.de/forum/die-meisten-gleichen-datensaetze-aus-einer-sql-datenbank-anzeigen-142801.html

Ausgedruckt am: 07.07.2025 um 05:07 Uhr

maretz
maretz 14.05.2010 um 07:55:18 Uhr
select count(spaltenname) from tabellenname order by count(spaltenname) limit 1

müsste in etwa gehen
65999
65999 14.05.2010, aktualisiert am 09.11.2016 um 10:25:30 Uhr
danke dir
it-frosch
it-frosch 14.05.2010, aktualisiert am 24.11.2016 um 18:07:52 Uhr
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: dev.mysql.com/doc/refman/5.1/de/example-maximum-column-group.htm ...
65999
65999 14.05.2010, aktualisiert am 24.11.2016 um 18:07:32 Uhr
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  
maretz
maretz 14.05.2010 um 13:14:14 Uhr
count(1) -> kann nicht klappen. Da gehört nen Tabellenname rein - und ich glaub (hoffe) nicht das du deine Tabellen einfach durchnummeriert hast...
65999
65999 14.05.2010, aktualisiert am 09.11.2016 um 10:20:33 Uhr
Ok, dachte der Spaltenname gehört da rein weil ich ja auch nur die Einträge in der spalte zählen wollte.
it-frosch
it-frosch 14.05.2010 um 22:32:36 Uhr
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.
Biber
Biber 15.05.2010 um 13:59:50 Uhr
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
it-frosch
it-frosch 15.05.2010 um 14:19:14 Uhr
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.