Spalteninhalt und Anzahl aus MSSQL DB mit PHP ausgeben
Hallo,
Ich habe eine mssql Datenbank wo ich mit PHP eine Seite habe wo ich Musiklieder
mit Interpret gespeichert habe.
Jetzt möchte ich folgendes machen.
Ich möchte eine Seite wo ich die Interpreten aufliste und daneben eine Spalte
mit der Anzahl der Lieder wo gespeichert sind.
Also wenn der Interpret Heino mit 20 Lieder drin ist dann sollte da
Heino nur 1x erscheinen und daneben 20.
Kann mir da jemand weiterhelfen, oder mir einen Ansatz oder Tipp geben wie
man so was macht.
Danke.
Gruß
Helmut
Ich habe eine mssql Datenbank wo ich mit PHP eine Seite habe wo ich Musiklieder
mit Interpret gespeichert habe.
Jetzt möchte ich folgendes machen.
Ich möchte eine Seite wo ich die Interpreten aufliste und daneben eine Spalte
mit der Anzahl der Lieder wo gespeichert sind.
Also wenn der Interpret Heino mit 20 Lieder drin ist dann sollte da
Heino nur 1x erscheinen und daneben 20.
Kann mir da jemand weiterhelfen, oder mir einen Ansatz oder Tipp geben wie
man so was macht.
Danke.
Gruß
Helmut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201848
Url: https://administrator.de/forum/spalteninhalt-und-anzahl-aus-mssql-db-mit-php-ausgeben-201848.html
Ausgedruckt am: 03.04.2025 um 18:04 Uhr
17 Kommentare
Neuester Kommentar
Wie SQL im Deatil funktioniert, wäre etwas zu komplex um dies hier im Forum zu erläutern. Aber hier mal ein Link, wie das mit dem Count-Befehl funktioniert: http://www.1keydata.com/de/sql/sql-count.php
Grüße
Odde23
Das ist nicht alles.
Da nur ein Eintrag angezeigt werden soll muss auf jeden Fall ein GROUP BY auf dem Interpreten angewendet werden. Dann würde ich dort den COUNT in einen Subselect packen. Das würde das gewünschte Ergebnis liefern.
Beispiel:
Ich glaube so müsste die Syntax sein.
EDIT: Ich glaube so könnte es funktionieren.
Da nur ein Eintrag angezeigt werden soll muss auf jeden Fall ein GROUP BY auf dem Interpreten angewendet werden. Dann würde ich dort den COUNT in einen Subselect packen. Das würde das gewünschte Ergebnis liefern.
Beispiel:
SELECT musik.* ,
(
SELECT COUNT(musik.Interpret)
FROM musik AS b
WHERE musik.Interpret=b.Interpret
GROUP BY b.Interpret
) as Anzahl
FROM musik
GROUP BY musik.Interpret
EDIT: Ich glaube so könnte es funktionieren.
z.B. Es gibt eine Spalte mit Interpret und eine Spalte mit Songs . . .
Hi,
. . . in einer Tabelle? Schon mal was von Normalisierung gehört? http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
Tabelle 1 - Interpreten
Tabelle 2 - Lieder, wobei jedem Lied die ID des Interpreten zugeordnet wird.
select interpret, count(lied) as "Anzahl Lieder" from interpreten, lieder
where interpreten.id = lieder.id
group by interpret
Gruß
Günni
Zitat von @helmuthelmut2000:
Hallo,
Das ist nicht das was ich mir vorgestellt habe.
Ich möchte nur, wenn ich die Spalte Interpret selectiere, nicht die Interpreten z.B. 20mal
den gleichen Namen da stehen habe.
Sondern der Name sollte nur ein mal erscheinen und dann die Anzahl wie oft es den Namen in der
Spalte Interpret gibt.
Hallo,
Das ist nicht das was ich mir vorgestellt habe.
Ich möchte nur, wenn ich die Spalte Interpret selectiere, nicht die Interpreten z.B. 20mal
den gleichen Namen da stehen habe.
Sondern der Name sollte nur ein mal erscheinen und dann die Anzahl wie oft es den Namen in der
Spalte Interpret gibt.
Hi Helmut,
es gibt zwei Möglichkeiten.
1. So wie du deine DB beschreibst . . .
Interpret | Titel |
Heino | Schwarzbraun ist die Haselnuss |
Heino | Caramba, Caracho ein Whiskey |
Heino | Rammstein |
. . . ist es einigermaßen daneben.
Stell' dir mal Interpret erweitert als Stammdaten vor, mit PLZ, Ort, Strasse, Telefon, Fax etc. . . .
Titel wäre dann ein Detail von Stammdaten. Würdest du zu jedem Detail, das du einfügst, jedesmal die
ganzen Stammdaten eintragen wollen? Dann sähe deine Tabelle so aus . . .
Interpret | PLZ | Ort | Strasse | Telefon | Fax | Titel |
Heino | 12345 | HeinoStadt | HeinoStrasse | HeinoTelefon | HeinoFax | Schwarzbraun ist die Haselnuss |
Heino | 12345 | HeinoStadt | HeinoStrasse | HeinoTelefon | HeinoFax | Caramba, Caracho ein Whiskey |
Heino | 12345 | HeinoStadt | HeinoStrasse | HeinoTelefon | HeinoFax | Rammstein |
2. Möglichkeit (eine Form der Normalisierung)
Tabelle Interpret (Stammdaten)
ID | Interpret | PLZ | Ort | Strasse | Telefon | Fax |
1 | Heino | 12345 | HeinoStadt | HeinoStrasse | HeinoTelefon | HeinoFax |
2 | Die Ärzte | 23456 | ÄrzteStadt | ÄrzteStrasse | ÄrzteTelefon | ÄrzteFax |
Tabelle Titel (Details)
ID | Titel |
1 | Schwarzbraun ist die Haselnuss |
1 | Caramba, Caracho ein Whiskey |
1 | Rammstein |
2 | Schrei nach Liebe |
2 | Männer sind Schweine |
So erhälst du mit . . .
select interpret, count(titel) as "Anzahl Titel" from interpret, titel
where interpret.id = titel.id
group by interpret
. . . dein gewünschtes Ergebnis:
Heino(3)
Die Ärzte(2)
Auch andere Info, die in den Details vorhanden sein können (Liveauftritt, Erscheinungsjahr, Album etc.), lassen sich so leicht abfragen.
Gruß
Günni
Zitat von @LianenSchwinger:
Hallo,
was jetzt noch fehlt ist eine Tabelle mit den Daten zum Album:
Name, Erscheinungsdatum, Anzahl CD'S, Cover, Studio usw.
G Jörg
Hallo,
was jetzt noch fehlt ist eine Tabelle mit den Daten zum Album:
Name, Erscheinungsdatum, Anzahl CD'S, Cover, Studio usw.
G Jörg
Genau! Dann lernt er gleich, wie mans richtig macht, anstatt Daten in einer Tabelle redundant abzulegen.
Ein kleiner Schreibfehler in den Stammdaten (Interpret), schon ists vorbei mit group by.
Gruß
Günni
Kannst du auch mal erläutern, wie du es so hinbekommen hast?
Wäre vielleicht auch nützlich für andere
Gruß
Günni
Hallo Helmut,
das "AS a" ist nur das Bilden eines Alias-Namens für die Tabelle "MusikTabelle" aus meinem Beispiel.
So kann ich einfach "a.interpret" statt "MusikTabelle.interpret" schreiben. Wobei bei nur einer Tabelle brauche ich nicht zwingend einen Alias bzw. überhaupt die Referenz auf den Tabellennamen.
G Jörg
das "AS a" ist nur das Bilden eines Alias-Namens für die Tabelle "MusikTabelle" aus meinem Beispiel.
So kann ich einfach "a.interpret" statt "MusikTabelle.interpret" schreiben. Wobei bei nur einer Tabelle brauche ich nicht zwingend einen Alias bzw. überhaupt die Referenz auf den Tabellennamen.
G Jörg