Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL-Abfrage

Empfohlene Antworten

Veröffentlicht

Hallo Leutz,

hab hier ne kundendatenbank. ich soll rausfiltern, wie viele kunden weiblich und wie viele kunden männlich sind.

dabei steht die spalte fdlAnrede = 1 für frauen und = 2 für männer


SELECT Count(fdlAnrede = '1') AS Frauen, Count (fdlAnrede = '2') AS Männer

FROM tblKunden

GROUP BY fdlAnrede;

da krieg ich dann auch die richtigen zahlen raus, aber halt untereinander und in jeder spalte das selbe, aber nicht das richtige ergebnis in der richtigen spalte.

hat jemand ne idee?

danke im voraus.

hi,

ohne gruppierung klappt das auch:

SELECT Count(fdlAnrede = '1') AS Frauen, Count (fdlAnrede = '2') AS Männer

FROM tblKunden

hth...

Original geschrieben von Psycho Fred



SELECT Count(fdlAnrede = '1') AS Frauen, Count (fdlAnrede = '2') AS Männer

FROM tblKunden

GROUP BY fdlAnrede;

hat jemand ne idee?

danke im voraus.

Das geht so nicht, so kannst das Count nicht verwenden. Die Richtung in die du da gehst waere sowas wie ein Subquery im Count, aber das geht nicht.

Wieso willst du das denn eigentlich unbedingt in einer Abfrage haben?

Goos

habe die lösung gefunden, trotzdem vielen dank für eure hilfe.


SELECT fdlAnrede, Count(fdlAnrede) AS Anzahl

FROM tblKunden

GROUP BY fdlAnrede;

Original geschrieben von Psycho Fred

habe die lösung gefunden, trotzdem vielen dank für eure hilfe.



SELECT fdlAnrede, Count(fdlAnrede) AS Anzahl

FROM tblKunden

GROUP BY fdlAnrede;

hmm... aber so stehen die einträge für frauen und männer weiterhin untereinander... wenn dein dbms korrelierte abfragen unterstützt funktioniert das hier:
select max(anz_frauen) as anz_frauen, max(anz_maenner) as anz_maenner from

 (

  select count(*) as anz_frauen, 0 as anz_maenner 

  from tblKunden

  where fdlAnrede  = '1'

  union

  select 0 as anz_frauen, count(*) as anz_maenner 

  from tblKunden

  where fdlAnrede  = '2'

 )

ansonsten könnte man den part in klammern auch in eine view auslagern.

hth...

... oder in schlichte subselects umwandeln:

SELECT

	(SELECT Count(fdlAnrede) FROM tblKunden WHERE fdlAnrede = 1) AS [weibliche Kunden],

	(SELECT Count(fdlAnrede) FROM tblKunden WHERE fdlAnrede = 2) AS [männliche Kunden]

FROM tblKunden

Je nach DBMS kanns auch so gehen:

SELECT COUNT(CASE WHEN fdlAnrede = '1' THEN 1 END) AS Frauen, COUNT (CASE WHEN fdlAnrede = '2' THEN 1 END) AS Männer  FROM tblKunden

Goos

Original geschrieben von Goos

Je nach DBMS kanns auch so gehen: ....

Von Oracle weiß ich das es da möglich ist case zu verwenden, in welchen DBMS geht das noch? Auch in Mysql und MS-sqlserver?

Grüße mme

MS-SQL: Ja

MySQL: nein - afaik, noch nicht

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.