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

SQL-Abfrage - 2 mal COUNT auf gleiche Spalte einer Tabelle.

Frage Entwicklung Datenbanken

Mitglied: JosefSepp

JosefSepp (Level 1) - Jetzt verbinden

27.07.2011, aktualisiert 13:36 Uhr, 7006 Aufrufe, 3 Kommentare

Hallo,

Ich habe folgendes Problem.

Ich habe die Tabelle "Lieferscheine" in der Datenbank.

Nun soll herausgefunden welcher Lieferant, wie viele Lieferscheine hat.

Sinngemäß:

__________________

Select lieferant, count(*)

from lieferscheine

where lieferant in (1,2,3,4,5)

group by lieferant

___________________

Zugleich soll herausgefunden welche Lieferscheine bei den jeweiligen Lieferanten noch offen sind.

Sinngemäß:
______________________

Select lieferant, count(*)

from lieferscheine

where lieferant in (1,2,3,4,5)
and status = 1

group by lieferant

_______________________


Nun sollen die beiden Abfragen zusamengeführt werden, dass die Ausgabe so aussieht

Lieferant |LS_komplett |LS_offen
1 |2131 |1001
2 |1234 |700
3 |3429 |100
4 |21241 |5000




Gibt es eine Möglichkeit, dies zu realisieren?

Im Voraus schon mal besten Dank für Eure Hilfe.

mfg

JosefSepp
Mitglied: AndreasHoster
27.07.2011 um 14:17 Uhr
Die einfache Lösung wäre:
Die beiden Statements oben als View bauen und dann eine View, die die beiden über einen Join zusammennimmt.

Wenn man es als einzelnes Select Statement haben will, es sollte auch sowas gehen (ungetestet):
01.
Select t1.Lieferant, t1.Komplett, t2.Offen 
02.
from 
03.
(Select lieferant, count(*) as komplett from lieferscheine where lieferant in (1,2,3,4,5) group by lieferant) as t1, 
04.
(Select lieferant, count(*) as offenfrom lieferscheine where lieferant in (1,2,3,4,5) and status=1 group by lieferant) as t2 
05.
where t1.Lieferant=t2.Lieferant
Im Moment werden damit nur Lieferanten gefunden, die auch offene Posten haben, muß man halt den Inner Join in ein Outer Join umwandeln, aber da weiß ich die Syntax gerade nicht auswendig.
Bitte warten ..
Mitglied: dog
27.07.2011 um 15:24 Uhr
Am einfachsten ist ein Subselect:

01.
SELECT 
02.
  t.*, 
03.
  COUNT(*) AS Gesamt, 
04.
  (SELECT COUNT(*) FROM Lieferscheine t2 WHERE t2.Lieferant = t.Lieferant AND t2.Status = 1) AS Offen 
05.
FROM 
06.
  Lieferscheine t 
07.
WHERE 
08.
  t.Lieferant IN (1,2,3) 
09.
GROUP BY 
10.
  t.Lieferant
(ungetestet)
Bitte warten ..
Mitglied: JosefSepp
10.08.2011 um 09:19 Uhr
So bin gerade wieder aus dem Urlaub zurück und werde beide Varianten mal testen. Vielen Dank!
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit "kleiner gleich" funktioniert nicht (2)

Frage von derSESO zum Thema Datenbanken ...

Datenbanken
gelöst Hilfe bei SQL-Abfrage (5)

Frage von emeriks zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (58)

Frage von pjrtvly zum Thema Internet ...

DSL, VDSL
VDSL Signal via PowerLine an Fritzbox - Möglich? (19)

Frage von Seichobob zum Thema DSL, VDSL ...

Windows Server
Benutzer sperrt sich immer wieder im Active Directory Contoller (16)

Frage von Kirdy1301 zum Thema Windows Server ...