Top-Themen

Aktuelle Themen (A bis Z)

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

mySQL - Wie zähle ich Einträge die keinen count haben

Mitglied: fablei

fablei (Level 1) - Jetzt verbinden

10.09.2008, aktualisiert 16:53 Uhr, 3632 Aufrufe, 7 Kommentare

Hallo Forum,

ich habe zwei Tabellen. Die eine enthält Altersstufen (Tabelle alter), die andere enthält dazugehörige Texte (Tabelle texte).


id alter
1 10-12
2 13-15
3 16-18
4 19-27

id alter_id texte
1 3 bla
2 3 blub
3 3 lala
4 1 haha

Nun brauche ich eine Abfrage, die mir sagt wieviele Texteinträge es zu der jeweiligen Altersstufe gibt.
Folgendes habe ich dazu schon, das ist aber nicht was ich brauche:

Select COUNT(texte.id) AS Anzahl, alter.id
FROM texte
JOIN `alter` ON texte.alter_id = alter.id
WHERE
-hier ein paar Bedingungen-
GROUP BY alter.id

Diese Abfrage würde mir aber nur folgendes Ergebnis liefern:

Anzahl alter.id
3 16-18
1 10-12

Ich möchte aber dieses Ergbnis:

Anzahl alter
1 10-12
0 13-15
3 16-18
0 19-27

Wie lässt sich das als SQL Statement formulieren?

Danke und viele Grüße,
Fabian
Mitglied: Biber
10.09.2008 um 12:15 Uhr
Moin fablei,

eine Möglichkeit von vielen:
01.
Select COUNT(texte.id) AS Anzahl, alter.id 
02.
FROM texte 
03.
LEFT JOIN `alter` ON texte.alter_id = alter.id 
04.
WHERE 
05.
-hier ein paar Bedingungen- 
06.
GROUP BY alter.id
Grüße
Biber
Bitte warten ..
Mitglied: fablei
10.09.2008 um 14:02 Uhr
Hi,

danke für die Antwort.

Leider liefert diese Abfrage dasselbe Ergebnis zurück wie meine schon gepostete.

Es werden keine Null-Treffer berücksichtigt.

Welche Möglichkeiten gibt es denn noch?

Grüße,
Fabian
Bitte warten ..
Mitglied: Biber
10.09.2008 um 14:35 Uhr
Moin fablei,

hast natürlich Recht - so viel kann ein LEFT JOIN nicht bringen, wenn nach wie vor die Tabelle mit "allen Sätzen" die Tabelle "texte" bleibt....

01.
Select COUNT(texte.id) AS Anzahl, alter.id 
02.
FROM `alter` 
03.
LEFT JOIN texte ON `alter`.id = texte.alter_id 
04.
WHERE 
05.
-hier ein paar Bedingungen- 
06.
GROUP BY alter.id
Sorry für das zu flüchtige Lesen
Biber
Bitte warten ..
Mitglied: fablei
10.09.2008 um 15:22 Uhr
Hm ich glaube langsam das Grundproblem ist der count(). Dieser scheint, wenn es keinen Datensatz gibt der die Bedingungen erfüllt, nicht einfach eine 0 auszugeben, sondern lieber gar nichts.

Prinzipiell hast du ja Recht. Die Tabelle alter ist die Grundlage und zu jedem Datensatz soll ein Count ermittelt werden. Ist dieser aber 0 wird im Result der Datensatz nicht mehr beachtet

Habe auch schon so Sachen gelesen wie: if(count(texte.id)="",0,count(texte.id)
Das geht aber auch nicht

Ich bin verzweifelt...
Bitte warten ..
Mitglied: Biber
10.09.2008 um 15:45 Uhr
Moin fablei,

wenn ich Deine Idee versuche (ungetestet) umzusetzen, dann sollte syntaktisch so etwas herauskommen:
01.
Select  
02.
If (IsNull(texte.id), 0,COUNT(texte.id)) AS Anzahl, alter.id 
03.
FROM `alter` 
04.
LEFT JOIN texte ON `alter`.id = texte.alter_id 
05.
WHERE 
06.
-hier ein paar Bedingungen- 
07.
GROUP BY alter.id
Grüße
Biber
Bitte warten ..
Mitglied: fablei
10.09.2008 um 15:56 Uhr
Habs mal gerade versucht. Klappt leider auch nicht. Immer das selbe. Die Nuller bleiben weg. Fraglich ist ja auch, ob das vielleicht Absicht ist und wir hier irgendwas wichtiges vergessen. Vielleicht hat das einen guten Grund warum solche Konstrukte immer nur die Datensätze ausgeben, die mit der Abfrage übereinstimmen und nicht die die quasi die Negativabfrage erfüllen würden.

Grüße,
Fabian
Bitte warten ..
Mitglied: SvenGuenter
10.09.2008 um 16:53 Uhr
Naja fast. Das Problem ist nicht das der Wert <NULL> ist sondern gar nicht da.
Wenn ich das richtig sehe ist das du einen Count auf die alter.Table machen musst. Und dazu einen full outer Join oder right outer join auf die Leute. Dann müßte es klappen.
Verbal Ausgedrückt

Zähle alles auch wenn es keinen eintrag in der tabelle Texte hat.
01.
Select count(alter.id) from 
02.
alter right outer join texte on alter.id = texte.alter_id
Bitte warten ..
Ähnliche Inhalte
Datenbanken

MySQL Trigger - Zählen von Zeilen (Count) und "Überwachen" einer Spalte

Frage von Oli-nuxDatenbanken3 Kommentare

Hallo, habe ein Problem und kann es leider selber mit MySQL Trigger nicht lösen. In der MySQL-DB bzw. in ...

Datenbanken

MySQL: Zwei Spalten in einer View zählen

Frage von Memo66Datenbanken11 Kommentare

Hallo, ich habe eine Fussballdatenbank mit der Tabelle 'Tore' die wie folgt aussieht Ich möchte nun aus Abfrage wo ...

Datenbanken

Alle Einträge zählen die einen bestimmten Status haben und diese einzeln anzeigen

Frage von tobmesDatenbanken1 Kommentar

Hi, wie der Titel schon verrät möchte ich in meiner Datenbank Einträge zählen und diese dann anzeigen. Hier mal ...

Windows Tools

Performance Counter weg

gelöst Frage von emeriksWindows Tools2 Kommentare

Hi, ich habe hier einen Win2008-R2-Server (Server1), bei welchem ich über den Performance Counter "Process" keine Prozesse angezeigt bekomme, ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 7 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 18 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 18 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 18 StundenHardware11 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...