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

Mit freundlichen Grüßen

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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
SUM oder AVG in SQL Abfrage dauert viel zu lange warum? (5)

Frage von samet22 zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit MAX() (9)

Frage von FrAmEr zum Thema Datenbanken ...

Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...