Laden...

[gelöst] SQL: Tabelle öfters als einmal mit JOIN verknüpfen?

Erstellt von Lion1984 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.175 Views
L
Lion1984 Themenstarter:in
770 Beiträge seit 2006
vor 15 Jahren
[gelöst] SQL: Tabelle öfters als einmal mit JOIN verknüpfen?

verwendetes Datenbanksystem: MS SQL 2005

Hallo,
ich soll für unsere Firma eine Abfrage basteln, welche eigentlich im groben eine Gegenüberstellung zum aktuellen Jahr/Monat zum letzten Jahr/Monat liefert.

Dabei gibt es 2 wichtige Tabellen:

  • Tabelle A: enthält zB. Name eines Artikels und ID
  • Tabelle B: enthält zB. Artikeltransaktionen (Datum, ID, Kosten).

Nun möchte ich eben eine Gegenüberstellung darstellen.
folgendes habe ich bereits:

SELECT 
	Tabelle1.Name, Count(cy.Counter) AS Anzahl, SUM(cy.Kosten) as Kosten
FROM 
	Tabelle1
	LEFT JOIN
	(
		SELECT 
			1 as Counter,
			Kosten
		FROM 
			Tabelle2
		WHERE 
			DATUM >= '09/01/2008'
			AND DATUM < '09/18/2008'
	) AS cy ON 
		Tabelle1.ArtikelID = cy.ArtikelID AND


Diese Abfrage liefert mir für das jetztige Monat das gewünschte Ergebniss, nun würde ich gerne ein weiteres LEFT JOIN verwenden, um die selbe Abfrage von Tabelle2 zu verwenden, nur mit einer anderen Datumsgrenze.

SELECT 
	Tabelle1.Name, Count(cy.Counter) AS Anzahl, SUM(cy.Kosten) as Kosten
FROM 
	Tabelle1
	LEFT JOIN
	(
		SELECT 
			1 as Counter,
			Kosten
		FROM 
			Tabelle2
		WHERE 
			DATUM >= '09/01/2008'
			AND DATUM < '09/18/2008'
	) AS cy ON 
		Tabelle1.ArtikelID = cy.ArtikelID AND
	LEFT JOIN
	(
		SELECT 
			1 as Counter,
			Kosten
		FROM 
			Tabelle2
		WHERE 
			DATUM >= '08/01/2008'
			AND DATUM < '08/18/2008'
	) AS py ON 
		Tabelle1.ArtikelID = py.ArtikelID AND

Jedoch stimmt nachher das Ergebniss von der ersten Abfrage überhaupt nicht mehr.

Meiner Meinung nach wäre ein LEFT JOIN angebracht gewesen, aber ich lasse mich gerne überzeugen.

lg Lion

lg Lion

D
496 Beiträge seit 2005
vor 15 Jahren

hier mal ein paar schlagwörter: UNION order group by (z.B. nach wochen oder monaten)

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

L
Lion1984 Themenstarter:in
770 Beiträge seit 2006
vor 15 Jahren

Hallo,

natürlich prompt was vergessen zu erwähnen. es ist wichtig, dass die aktuellen und vormoants Werte in einer Zeile stehen (also nebeneinander), da reiheneiße z.B. Verkaufslokationen aufgelistet werden und nach dennen gruppiert wird.

Also ich brauche es auf die art:
SELECT Tabelle1.NAME, SUM(py.Kosten), SUM(cy.Kosten) ...

lg Lion

D
496 Beiträge seit 2005
vor 15 Jahren

in diesem fall empfehle ich mal nach CASE zu suchen.

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

L
Lion1984 Themenstarter:in
770 Beiträge seit 2006
vor 15 Jahren

Das is es, danke

lg Lion