gleiche einträge suchen und der größe nach sortieren!
peppino
- datenbank
Hallo zusammnen!
Ich komme bei einer ich hoffe simplen DB-Abfrage nicht weiter.
Ich habe in einer Tabelle die Felder "name" und "test".
Es gibt jetzt mehrere Einträge mit dem gleichen "name" aber der wert in test kann "ja" oder "nein" sein.
Ich möchte jetzt aufgelistet haben, welche "name" die meisten "ja" hat.
Also die Top5 dann in einer Tabelle
1. "name1" mit 5 "ja"
2. "name2" mit 3 "ja"
usw.
Hoffe Ihr könnt mir helfen.
Vielen Dank schonmal
Gruß Peppino
Grüße,
GROUP BY name und dann abzählen - das ist finde ich wofür variable variablennamen gut sind ;) eine if mit +/- in der shcleife und gut ist...
aber es gibt sicher eine elegantere lösung.
MFG
bleicher
Hi bleicher,
GROUP BY name und dann abzählen - das ist finde ich wofür variable variablennamen gut sind ;) eine if mit +/- in der shcleife und gut ist...
Wenn du nur GROUP BY name verwendest, erhältst du pro existentem Namen nur ein Ergebnis in der Resultmenge. Da du von "if mit +/-" redest, meinst du wohl eher WHERE test = "ja" und dann willst du das Ergebnis durchzählen.
aber es gibt sicher eine elegantere lösung.
In der Tat. Ohne es jetzt getestet zu haben, sollte prinzipiell folgendes funktionieren:
SELECT
name,
COUNT(*) AS anzahl
FROM
tabelle
GROUP BY
name
HAVING
test = 'Ja'
ORDER BY
anzahl DESC
Viele Grüße,
~ Dennis.
Hi bleicher,
GROUP BY name und dann abzählen - das ist finde ich wofür variable variablennamen gut sind ;) eine if mit +/- in der shcleife und gut ist...
Wenn du nur GROUP BY name verwendest, erhältst du pro existentem Namen nur ein Ergebnis in der Resultmenge. Da du von "if mit +/-" redest, meinst du wohl eher WHERE test = "ja" und dann willst du das Ergebnis durchzählen.
aber es gibt sicher eine elegantere lösung.
In der Tat. Ohne es jetzt getestet zu haben, sollte prinzipiell folgendes funktionieren:
SELECT
name,
COUNT(*) AS anzahl
FROM
tabelle
GROUP BY
name
HAVING
test = 'Ja'
ORDER BY
anzahl DESC
>
>
> Viele Grüße,
> ~ Dennis.
Hallo Dennis,
erstmal vielen Dank.
wie oben beschrieben, bin ich noch im Anfangsstadium.
Wenn Du mir jetzt noch die fehlenden Zeilen posten könntest, damit ich die benötigten Variablen in eine Tabell bz. einen Text einsetzen kann, würdest mich für heute Abend noch richtig glücklich machen ;)
Gruß Marcus
echo $begrüßung;
Ohne es jetzt getestet zu haben, sollte prinzipiell folgendes funktionieren:
SELECT
name,
COUNT(*) AS anzahl
FROM
tabelle
GROUP BY
name
HAVING
test = 'Ja'
ORDER BY
anzahl DESC
Nein, das funktioniert prinzipiell nicht, da HAVING sich nur auf das beziehen kann, was in der SELECT-Klausel aufgezählt wurde, sprich: sich bereits in der vorläufigen Ergebnismenge befindet. Wenn nur alle ja-Datensätze benötigt werden, kann man die schon mit WHERE filtern.
echo "$verabschiedung $name";
Hi dedlfix,
[…] da HAVING sich nur auf das beziehen kann, was in der SELECT-Klausel aufgezählt wurde, sprich: sich bereits in der vorläufigen Ergebnismenge befindet. Wenn nur alle ja-Datensätze benötigt werden, kann man die schon mit WHERE filtern.
Stimmt, du hast natürlich Recht. Ich verwechsle irgendwie immer die Reihenfolge, in der HAVING und WHERE abgearbeitet werden ;-)
@Marcus: Also nach FROM tabelle
eine WHERE test = "Ja"
einfügen und das HAVING test = "Ja"
streichen.
Viele Grüße,
~ Dennis.
echo $begrüßung;
Ich verwechsle irgendwie immer die Reihenfolge, in der HAVING und WHERE abgearbeitet werden ;-)
Die Faustregel lautet: So wie die Klauseln notiert sind / werden müssen. Ausnahme: Die Feldliste von SELECT wird zwischen GROUP BY und HAVING ausgewertet.
Dementsprechend kann man in den Klauseln nur auf die Werte und Bezeichner zugreifen, die bereits in den vorangegangenen Klauseln ausgewertet wurden. Beispielsweise kann WHERE nicht auf Feldlistenaliasse zugreifen, HAVING und ORDER BY können das. WHERE kann aber Tabellenaliasse verwenden.
echo "$verabschiedung $name";
Hallo
Also bin php/sql Anfänger, und zur Zeit suche ich mir immer code-schnipsel zusammen aus 1000 foren, und passe die dann für mich an.
sprich ich habe keine ahnung wie ich eine komplette abfrage schreiben muss weiss aber wie ich eine fertige abfrage lesen und verstehen muss :(
also für codes wäre ich sehr dankbar.
Gruß Peppino