Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Spalteninhalt und Anzahl aus MSSQL DB mit PHP ausgeben

Frage Entwicklung PHP

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

15.02.2013 um 19:59 Uhr, 2831 Aufrufe, 17 Kommentare

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
Mitglied: Odde23
15.02.2013 um 21:33 Uhr
Hi,

das würde ich mit einem simplen Count(songs) im SQL Statement machen. Eigentlich keine große Sache. Am PHP muss man da nichts anpassen.

Gruß
Odde23
Bitte warten ..
Mitglied: helmuthelmut2000
15.02.2013 um 21:46 Uhr
Hallo Odde23,

Kannst Du mir das etwas Erklären wie man das macht?

Danke
Bitte warten ..
Mitglied: Odde23
15.02.2013 um 21:55 Uhr
Zitat von helmuthelmut2000:
Kannst Du mir das etwas Erklären wie man das macht?

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
Bitte warten ..
Mitglied: EvilMoe
15.02.2013, aktualisiert 16.02.2013
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:
01.
SELECT musik.* ,   
02.
03.
  SELECT COUNT(musik.Interpret)  
04.
  FROM musik AS b  
05.
  WHERE musik.Interpret=b.Interpret 
06.
  GROUP BY b.Interpret 
07.
) as Anzahl  
08.
FROM musik  
09.
GROUP BY musik.Interpret
Ich glaube so müsste die Syntax sein.


EDIT: Ich glaube so könnte es funktionieren.
Bitte warten ..
Mitglied: helmuthelmut2000
15.02.2013 um 22:19 Uhr
Mit dem Count Befehl kann ich nur die Anzahl der Zeilen in einer Spalte zählen.

Ich möchte aber die Verschieden Spalteninhalte zählen.

z.B.
Es gibt eine Spalte mit Interpret und eine Spalte mit Songs.

In Spalte Interpret gibt es z.B. 10x den Interpret A weil es da auch 10 Songs dazu gibt, und 20x den Interpret B
weil es da 20 Songs dazu gibt.

Jetzt sollte das so erscheinen:

A 10x
B 20x

usw.
Bitte warten ..
Mitglied: Guenni
16.02.2013 um 06:46 Uhr
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.


01.
select interpret, count(lied) as "Anzahl Lieder" from interpreten, lieder 
02.
 
03.
where interpreten.id = lieder.id 
04.
 
05.
group by interpret
Gruß
Günni
Bitte warten ..
Mitglied: LianenSchwinger
16.02.2013 um 10:20 Uhr
Hallo,

Leute verwirrt ihn doch nicht mit Normalisierung oder dergleichen. Der Threadersteller scheint wenig bis keine Kenntnisse in SQL zu haben.

Also einfachstes Statement:

01.
SELECT a.interpret, 
02.
       COUNT(a.titel) As AnzLieder, 
03.
FROM MusikTabelle AS a 
04.
GROUP BY a.interpret
Gruß Jörg
Bitte warten ..
Mitglied: helmuthelmut2000
16.02.2013 um 14:03 Uhr
Hallo,

Kannst Du mir das a. etwas Erklären?

Danke.
Bitte warten ..
Mitglied: EvilMoe
16.02.2013, aktualisiert um 14:06 Uhr
Das kannst du auch weg lassen, er hat der Tabelle "MusikTabelle" nur einen Alias zugewiesen.
01.
FROM MusikTabelle AS a 
Im Prinzip kannst Du bei einem SELECT in nur einer Tabelle das "a." und das "AS a" weglassen.
Bitte warten ..
Mitglied: helmuthelmut2000
16.02.2013 um 14:21 Uhr
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.
Bitte warten ..
Mitglied: EvilMoe
16.02.2013, aktualisiert um 14:30 Uhr
Du möchtest das hier:
01.
SELECT interpret, COUNT(interpret) As Anzahl, 
02.
FROM MusikTabelle 
03.
GROUP BY interpret
Dies meinten meine Vorredner.

EDIT: Ich hoffe du weißt, dass Du auch Dein Script leicht anpassen musst? Denn du bekommst nun einen zusätzlichen Wert aus deinem Query.
Bitte warten ..
Mitglied: Guenni
16.02.2013 um 16:42 Uhr
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.


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
. . . usw..


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 . . .

01.
select interpret, count(titel) as "Anzahl Titel" from interpret, titel  
02.
 
03.
where interpret.id = titel.id 
04.
 
05.
 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
Bitte warten ..
Mitglied: LianenSchwinger
16.02.2013 um 19:17 Uhr
Hallo,

was jetzt noch fehlt ist eine Tabelle mit den Daten zum Album:

Name, Erscheinungsdatum, Anzahl CD'S, Cover, Studio usw.

G Jörg
Bitte warten ..
Mitglied: Guenni
17.02.2013, aktualisiert um 10:49 Uhr
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

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
Bitte warten ..
Mitglied: helmuthelmut2000
17.02.2013 um 11:32 Uhr
Hallo,

Das hab ich jetzt so hinbekommen.

Danke für die Hilfe.

Gruß
Helmut
Bitte warten ..
Mitglied: Guenni
17.02.2013, aktualisiert um 13:23 Uhr
Zitat von helmuthelmut2000:
Hallo,

Das hab ich jetzt so hinbekommen.

Danke für die Hilfe.

Gruß
Helmut

Kannst du auch mal erläutern, wie du es so hinbekommen hast?

Wäre vielleicht auch nützlich für andere

Gruß
Günni
Bitte warten ..
Mitglied: LianenSchwinger
17.02.2013, aktualisiert um 13:14 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...