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 Statment zwei Tabellen

Frage Entwicklung Datenbanken

Mitglied: ottscho

ottscho (Level 2) - Jetzt verbinden

08.07.2009, aktualisiert 20.10.2009, 3690 Aufrufe, 10 Kommentare

Hallo zusammen,

ich habe zwei Tabellen:

Angebote
KDNR ; Angebotnr ; Datum ;

Aufträge
KDNR ; Auftragnummer; Datum ;

Nun möchte ich einen Abfrage über jede Tabelle, das Ergebnis aber zusammenführen.

Abfrage1:
select kdnr, count(angebotnr) As AngebotAnzahl from angebote
where datum > '01.01.2009'
group by kdnr

als ergebnis bekomme ich:
kdnr ; AngebotAnzahl ;
1 ; 10 ;
2 ; 29 ;
usw.

Das gleiche kann ich mit Tabelle Aufträge machen, dann sieht das Ergebnis so aus:
kdnr ; AuftragAnzahl ;
1 ; 5 ;
2 ; 10 ;
usw.

Nun möchte ich aber eine Kombination aus beiden Ergebnis, welche so aussehen soll:
kdnr ; AngebotAnzahl ; AuftragAnzahl;
1 ; 10 ; 5 ;
2 ; 29 ; 10 ;
usw.

Kann ich dies mit reinem SQL verwirklichen oder benötige ich eine Procedur? (MSSQL2005)

Danke
Gruß
ottscho
Mitglied: BCCray
08.07.2009 um 15:51 Uhr
Hallo ottscho,

probier mal folgende query (bin ausm Kopf schreiben nicht der beste - also wenns nicht klappt... liegts an mir )

SELECT KDNR, COUNT(angebotnr) AS AngebotAnzahl, COUNT(auftragnummer) AS AuftragsAnzahl
FROM angebote ag join auftraege a where ag.kdnr = a.kdnr;

dürfte evtl zu dem gewünschten Ergebnis führen... so in der Art....

Greetz
Bitte warten ..
Mitglied: ottscho
08.07.2009 um 16:00 Uhr
Sorry, so kann es nicht gehen. Da bei Count ja die Ergebnisse gezählt werden und diese hier in einer Zeile stehen...
Sprich bei Count(angebotnr) und Count (auftragsnummer) kommen die gleiche Anzahl raus.

Zwischen den beiden Tabellen gibt es keine Beziehung!

Danke dir trotzdem...
Bitte warten ..
Mitglied: BCCray
08.07.2009 um 16:01 Uhr
stimmt..... hmm, aber vielleicht klappts mit einer Subselect und dann einen vergleich mit der KDNR?
Bitte warten ..
Mitglied: Biber
08.07.2009 um 16:03 Uhr
Moin ottscho,

versuch es so.
01.
SELECT * FROM ( 
02.
SELECT kdnr, count(angebotnr) As AngebotAnzahl, 0 as AuftragAnzahl  
03.
         FROM angebote where datum > '01.01.2009' 
04.
        Group by kdnr 
05.
UNION all 
06.
SELECT kdnr, 0, Count (AuftragNr)   
07.
        FROM Auftrag where datum > '01.01.2009' 
08.
       group by kdnr 
09.
10.
ORDER By 1;
Grüße
Biber
Bitte warten ..
Mitglied: ottscho
08.07.2009 um 16:09 Uhr
01.
SELECT * FROM ( 
02.
SELECT name, count(new_angebotnr) As AngebotAnzahl, 
03.
0 as AuftragAnzahl 
04.
FROM new_twangbot 
05.
where new_angebotdatum > '01.01.2009'  
06.
Group by name  
07.
 
08.
UNION all  
09.
 
10.
SELECT name, 
11.
0, 
12.
Count (new_auftragnr)    
13.
FROM new_twauftrag 
14.
where auftragdatum > '01.01.2009'  
15.
group by name ) 
16.
  
17.
ORDER By 1
Fehler:
Meldung 156, Ebene 15, Status 1, Zeile 17
Falsche Syntax in der Nähe des 'ORDER'-Schlüsselwortes.
Bitte warten ..
Mitglied: Biber
08.07.2009 um 22:14 Uhr
01.
SELECT name, sum(WTF) as AngebotAnzahl, sum(IsAlice) as Auftraganzahl  
02.
FROM ( 
03.
SELECT name, count(new_angebotnr) As WTF, 
04.
0 as IsAlice 
05.
FROM new_twangbot 
06.
WHERE new_angebotdatum > '01.01.2009'  
07.
GROUP BY name  
08.
 
09.
UNION ALL  
10.
 
11.
SELECT name, 
12.
0, 
13.
Count (new_auftragnr)    
14.
FROM new_twauftrag 
15.
WHERE auftragdatum > '01.01.2009'  
16.
GROUP BY name  
17.
18.
GROUP BY Name 
19.
ORDER BY name;
Bitte warten ..
Mitglied: ottscho
09.07.2009 um 07:56 Uhr
danke für deine bemühungen, aber leider kommt immer noch ein syntaxfehler:

01.
SELECT name, sum(WTF) as AngebotAnzahl, sum(IsAlice) as Auftraganzahl   
02.
FROM (  
03.
SELECT name, count(new_angebotnr) As WTF,  
04.
0 as IsAlice  
05.
FROM new_twangbot  
06.
WHERE new_angebotdatum > '01.01.2009'   
07.
GROUP BY name   
08.
 
09.
UNION ALL   
10.
 
11.
SELECT name,  
12.
0,  
13.
Count (new_auftragnr)     
14.
FROM new_twauftrag  
15.
WHERE new_auftragdatum > '01.01.2009'   
16.
GROUP BY name   
17.
)  
18.
GROUP BY name  
19.
ORDER BY name
fehler:
Meldung 156, Ebene 15, Status 1, Zeile 18
Falsche Syntax in der Nähe des 'GROUP'-Schlüsselwortes.
Bitte warten ..
Mitglied: MadMax
09.07.2009 um 09:11 Uhr
Moin Ottscho,

probier mal:
01.
select	an.KDNR, an.AngebotAnzahl, au.AuftragAnzahl 
02.
from	( 
03.
	select	KDNR, count (*) As AngebotAnzahl 
04.
	from	Angebote 
05.
	where	Datum > '01.01.2009' 
06.
	group by KDNR) an 
07.
	join ( 
08.
	select	KDNR, count (*) As AuftragAnzahl 
09.
	from	Aufträge 
10.
	where	Datum > '01.01.2009' 
11.
	group by KDNR) au on an.KDNR = au.KDNR
Gruß, Mad Max
Bitte warten ..
Mitglied: ottscho
09.07.2009 um 09:54 Uhr
super, hat nun bestens funktioniert

viele dank
Bitte warten ..
Mitglied: ottscho
20.10.2009 um 17:18 Uhr
Leider funktioniert es doch nicht 100%ig.

Sobald in der einen Tabelle bei Count nicht gezählt wird, wird nachher nicht 0 angezeigt, sondern der komplette Datensatz fällt raus.

Beispiel:
AngeboteAnzahl AuftragAnzahl
Datensatz1 1 1
Datensatz2 1 2
Datensatz3 0 1
Datensatz4 1 0

So sollte es aussehen, aber leider werden die unteren Beiden einfach nicht dargestellt.

Weiß jmd wie ich das SQL Statment ändern kann, dass es funktioniert?

Vielen Dank
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

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

Frage von Aximand zum Thema Datenbanken ...

Windows Server
gelöst SQL-Server Datenbanksicherung inkl. Benutzerberechtigungen dafür? (4)

Frage von 1410640014 zum Thema Windows Server ...

Windows 10
gelöst Installationsproblem sql server 2014 auf windos 10 rechner (23)

Frage von jensgebken zum Thema Windows 10 ...

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