![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 23.09.2008
Beiträge: 4
|
Hallo Leute, ich beschäftige mich seit einiger Zeit mit MSSQL. Mein bisheriger Code: sql Code:
Ich müsste 2 Abfragen vereinen. 1. Abfrage für den Gesamtumsatz pro Kunde: sql Code:
2. Abfrage Anzahl Bestellungen pro Kunde sql Code:
Wie mache ich das? Mein Problem ist, das ich bei JOIN nur ein FROM-Tabelle angeben kann. Kann mir jemand helfen? Gruß Mike Geändert von Jann Hendrik (24.09.2008 um 07:58 Uhr) |
| | |
| | Nach oben #2 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.374
|
Willkommen im Forum. Ich habe mal deinen post editiert und den tag dafür eingebaut, dass der Code anders dargestellt wird, was das lesen des selbigen erleichtert.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #3 |
| Neuer Benutzer Registriert seit: 23.09.2008
Beiträge: 4
|
1. sql Code:
2. sql Code:
Ich möchte diese beiden Abfragen vereinen. Habe schon so einiges versucht, aber ohne Erfolg. Ich bräuchte entweder beiden Abfragen vereint zu einer oder ich muss einen Weg finden, wie ich die beiden Abfragen in ein ResultSet (Java) schreibe. Danke. Vielleicht kommt noch eine Antwort. Gruß Mike Geändert von Jann Hendrik (01.10.2008 um 07:58 Uhr) |
| | |
| | Nach oben #4 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.374
|
Ich kann dir inhaltlich nicht helfen, bitte dich aber darum, meine Bitte in Zukunft nicht zu ignorieren. Hier nochmal ein wenig ausführlicher für dich: Um SQL-Code farbig darzustellen kannst du einfach den [highlight]-tag nutzen: [highlight=sql] SELECT `feldname` FROM `tabellenname` [/highlight] So sieht der Code dafür aus. Wenn du deinen SQL-Code damit formatierst, dann bearbeitet die Foren-Software das für highlight für dich. Dies erleichtert das Lesen für andere enorm! Daher bitten wir dich in Zukunft auf die Verwendung zu achten. Danke.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #5 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 582
|
Das Stichwort sind Subselects. Ich habe allerdings noch nie mit MSSQL gearbeitet, daher weiss ich nicht ob die Datenbank das kann. Ich kann aber bei Bedarf gerne ein Beispiel nachliefern wie es unter postgreSQL funktionieren würde. Gruß Sparrow |
| | |
| | Nach oben #8 |
| Neuer Benutzer Registriert seit: 23.09.2008
Beiträge: 4
|
hallo, ja, das siehst du richtig. das ergebnis der abfrage2 soll als spalte hinter der abfrage1 stehen, damit ich das ergebnis in ein resultset schreiben kann. danke für deine hilfe. das habe ich bis jetzt: [highlight=sql] SELECT k.cKundenNr, k.cFirma, k.cAnrede, k.cVorname, k.cName, k.cStrasse, k.cPLZ, k.cOrt, k.cLand, k.cEbayname, k.cSperre, COUNT(k.cName) AS AnzahlBestellungen , (CONVERT (varchar(10), (MIN(CAST(b.dErstellt AS smallDATETIME))),104)) AS ersteBestellung, (CONVERT (varchar(10), (MAX(CAST(b.dErstellt AS smallDATETIME))),104)) AS letzteBestellung, ( SELECT SUM (tbestellpos.fVKPreis * tbestellpos.nAnzahl) FROM tRechnung LEFT JOIN tbestellpos ON (tRechnung.tBestellung_kBestellung = tbestellpos.tBestellung_kBestellung) LEFT JOIN tkunde k2 ON (tRechnung.tkunde_kkunde = k2.kKunde) ) as summe FROM tkunde k INNER JOIN tbestellung b ON (k.kkunde = b.tkunde_kkunde) WHERE (k.cAktiv = 'Y') group by k.cKundenNr, k.cFirma, k.cAnrede, k.cVorname, k.cName, k.cStrasse, k.cPLZ, k.cOrt, k.cLand, k.cEbayname, k.cSperre order by k.cKundenNr nur hier wird die summe nicht pro kunde ausgegeben. danke und gruß mike |
| | |
| | Nach oben #9 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.374
|
Sry, wenn ich nochmal nachfrage, aber... bisher hat sich keiner so sehr geweigert die BBCodes zu benutzen... Wenn du Probleme mit der Benutzung von BBCodes hast, dann lass es mich wissen, dann erkläre ich dir das gerne nochmal. Ich gebe dir mal die Chance deinen post nun selbst zu editieren.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #10 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 582
|
Ich kenne dein Datenbankschema nicht, daher hab ich ein eigenes genommen. Das musst du dann auf deine Datenbank umschreiben. Das ganze ist eine Hardkopie aus psql und eigentlich selbsterklärend: Code: test=# \dt
Liste der Relationen
Schema | Name | Typ | Eigentümer
--------+--------------+---------+------------
public | bestellungen | Tabelle | postgres
public | bestpos | Tabelle | postgres
public | kunden | Tabelle | postgres
(3 Zeilen)
test=# SELECT * FROM kunden;
nr | name
----+-------------
1 | Kunde Nr. 1
2 | Kunde Nr. 2
3 | Kunde Nr. 3
4 | Kunde Nr. 4
(4 Zeilen)
Zeit: 1,336 ms
test=# SELECT * FROM bestellungen;
nr | kommentar | kunde
----+-----------+-------
1 | 1.1 | 1
2 | 1.2 | 1
3 | 1.3 | 1
4 | 2.1 | 2
5 | 3.1 | 3
6 | 3.2 | 3
7 | 3.3 | 3
8 | 3.4 | 3
9 | 4.1 | 4
10 | 4.2 | 4
(10 Zeilen)
Zeit: 1,091 ms
test=# SELECT * FROM bestpos;
bestellung | artikel | menge | preis
------------+---------+-------+-------
1 | 1 | 5 | 5
2 | 2 | 15 | 15
3 | 1 | 5 | 5
4 | 2 | 15 | 15
5 | 1 | 5 | 5
6 | 2 | 15 | 15
7 | 1 | 5 | 5
8 | 2 | 15 | 15
9 | 2 | 15 | 15
10 | 2 | 15 | 15
(10 Zeilen)
Zeit: 0,890 ms
test=# SELECT k.nr, k.name, COUNT (k.name) AS anzahl_bestellungen
test-# FROM kunden k
test-# INNER JOIN bestellungen b ON (k.nr = b.kunde)
test-# GROUP BY k.nr, k.name;
nr | name | anzahl_bestellungen
----+-------------+---------------------
1 | Kunde Nr. 1 | 3
4 | Kunde Nr. 4 | 2
3 | Kunde Nr. 3 | 4
2 | Kunde Nr. 2 | 1
(4 Zeilen)
Zeit: 2,235 ms
test=# SELECT b.kunde, SUM(bp.menge * bp.preis)
test-# FROM bestpos bp INNER JOIN bestellungen b ON (bp.bestellung = b.nr)
test-# GROUP BY b.kunde;
kunde | sum
-------+-----
4 | 450
2 | 225
3 | 500
1 | 275
(4 Zeilen)
Zeit: 1,402 ms
test=# SELECT k.nr, k.name, COUNT (k.name) AS anzahl_bestellungen, umsatz.summe
test-# FROM kunden k
test-# INNER JOIN bestellungen b ON (k.nr = b.kunde)
test-# INNER JOIN (SELECT bi.kunde, SUM(bp.menge * bp.preis) AS summe
test(# FROM bestpos bp INNER JOIN bestellungen bi ON (bp.bestellung = bi.nr)
test(# GROUP BY bi.kunde) AS umsatz ON (k.nr = umsatz.kunde)
test-# GROUP BY k.nr, k.name, umsatz.summe;
nr | name | anzahl_bestellungen | summe
----+-------------+---------------------+-------
2 | Kunde Nr. 2 | 1 | 225
3 | Kunde Nr. 3 | 4 | 500
1 | Kunde Nr. 1 | 3 | 275
4 | Kunde Nr. 4 | 2 | 450
(4 Zeilen)
Zeit: 2,239 ms
Wie gesagt, ich hab keine Ahnung ob das unter MSSQL überhaupt geht, aber unter postgreSQL sind subselects kein Problem. Falls du dazu Fragen hast, immer heraus damit. Gruß Sparrow |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Frage zur MSSQL und JOINS | phpdev | Datenbanken | 8 | 05.11.2007 18:46 |
| Welches Join soll ich verwenden? | Chr!s | Datenbanken | 8 | 06.07.2006 12:33 |
| mit LEFT OUTER JOIN mehr als 2 Tabellen verknüpfen ? | Alpha Centauri | Datenbanken | 4 | 06.04.2006 19:00 |
| 2 Abfragen einer Tabelle zusammenfassen - JOIN? | derMaggus | Datenbanken | 15 | 24.08.2005 17:40 |
| MSSQL anbinden ? ODBC ? JDBC ? | rola | Datenbanken | 5 | 11.01.2005 19:03 |