ottscho

SQL Statment zwei Tabellen

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 120026

Url: https://administrator.de/forum/sql-statment-zwei-tabellen-120026.html

Ausgedruckt am: 26.04.2025 um 10:04 Uhr

BCCray
BCCray 08.07.2009 um 15:51:19 Uhr
Goto Top
Hallo ottscho,

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

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
ottscho
ottscho 08.07.2009 um 16:00:10 Uhr
Goto Top
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...
BCCray
BCCray 08.07.2009 um 16:01:42 Uhr
Goto Top
stimmt..... hmm, aber vielleicht klappts mit einer Subselect und dann einen vergleich mit der KDNR?
Biber
Biber 08.07.2009 um 16:03:47 Uhr
Goto Top
Moin ottscho,

versuch es so.
SELECT * FROM (
SELECT kdnr, count(angebotnr) As AngebotAnzahl, 0 as AuftragAnzahl 
         FROM angebote where datum > '01.01.2009'  
        Group by kdnr
UNION all
SELECT kdnr, 0, Count (AuftragNr)  
        FROM Auftrag where datum > '01.01.2009'  
       group by kdnr
)
ORDER By 1;

Grüße
Biber
ottscho
ottscho 08.07.2009 um 16:09:22 Uhr
Goto Top
SELECT * FROM (
SELECT name, count(new_angebotnr) As AngebotAnzahl,
0 as AuftragAnzahl
FROM new_twangbot
where new_angebotdatum > '01.01.2009'   
Group by name 

UNION all 

SELECT name,
0,
Count (new_auftragnr)   
FROM new_twauftrag
where auftragdatum > '01.01.2009'   
group by name )
 
ORDER By 1

Fehler:
Meldung 156, Ebene 15, Status 1, Zeile 17
Falsche Syntax in der Nähe des 'ORDER'-Schlüsselwortes.
Biber
Biber 08.07.2009 um 22:14:38 Uhr
Goto Top
SELECT name, sum(WTF) as AngebotAnzahl, sum(IsAlice) as Auftraganzahl 
FROM (
SELECT name, count(new_angebotnr) As WTF,
0 as IsAlice
FROM new_twangbot
WHERE new_angebotdatum > '01.01.2009'   
GROUP BY name 

UNION ALL 

SELECT name,
0,
Count (new_auftragnr)   
FROM new_twauftrag
WHERE auftragdatum > '01.01.2009'   
GROUP BY name 
)
GROUP BY Name
ORDER BY name;
ottscho
ottscho 09.07.2009 um 07:56:56 Uhr
Goto Top
danke für deine bemühungen, aber leider kommt immer noch ein syntaxfehler:

SELECT name, sum(WTF) as AngebotAnzahl, sum(IsAlice) as Auftraganzahl  
FROM ( 
SELECT name, count(new_angebotnr) As WTF, 
0 as IsAlice 
FROM new_twangbot 
WHERE new_angebotdatum > '01.01.2009'    
GROUP BY name  

UNION ALL  

SELECT name, 
0, 
Count (new_auftragnr)    
FROM new_twauftrag 
WHERE new_auftragdatum > '01.01.2009'    
GROUP BY name  
) 
GROUP BY name 
ORDER BY name

fehler:
Meldung 156, Ebene 15, Status 1, Zeile 18
Falsche Syntax in der Nähe des 'GROUP'-Schlüsselwortes.
MadMax
MadMax 09.07.2009 um 09:11:04 Uhr
Goto Top
Moin Ottscho,

probier mal:
select	an.KDNR, an.AngebotAnzahl, au.AuftragAnzahl
from	(
	select	KDNR, count (*) As AngebotAnzahl
	from	Angebote
	where	Datum > '01.01.2009'  
	group by KDNR) an
	join (
	select	KDNR, count (*) As AuftragAnzahl
	from	Aufträge
	where	Datum > '01.01.2009'  
	group by KDNR) au on an.KDNR = au.KDNR

Gruß, Mad Max
ottscho
ottscho 09.07.2009 um 09:54:10 Uhr
Goto Top
super, hat nun bestens funktioniert face-smile

viele dank
ottscho
ottscho 20.10.2009 um 17:18:27 Uhr
Goto Top
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