![]() |
Datenbank: SQL Server 2005 • Version: 2005 STD • Zugriff über: ADO
SQL Abfrage aus 2 Viewszusammenführen
Hallo,
Ich tu mir gerade ein bisschen schwer bei einer Abfrage. Ich habe 2 Views aus 2 Haupttabellen die natürlich mit Left outer join aus ansderten Tabellen daten holen. In beiden Views sind ahnliche Spalten drin und nun möchte ich eine Abfrage machen über beide Views. Also die 1. view ist eine Lagerbewegung wo Kosten pro Paltz drin stehen. Die 2 View ist eine Aktionsdaten wo Minuten pro Platz als Störungen drin sind. Über die Minuten errechne ich dann die Personal Zeit für diesen eintrag. Und nun will ich eine Auswertung im Programm implementieren wo mir beide Kosten zurückgeben ( Lager und Personal ) von einem Zeitraum. Danke |
Re: SQL Abfrage aus 2 Viewszusammenführen
Versuchs mal mit der UNION-Abfrage:
SQL-Code:
Damit erhältst du eine Ergebnisliste mit beiden Abfragen.
SELECT spalte1, spalte2 FROM view1 UNION SELECT spalte1, spalte2 FROM view2;
|
Re: SQL Abfrage aus 2 Viewszusammenführen
Hi,
nein weil ich da nur die selben bekomme wie bei Distinct. Ich will aber beide Daten ,wenn auch einige Spalten gleich sind. *HMMM* oder ich mache unterschiedliche Spalten in beiden Views. mal schaun. |
Re: SQL Abfrage aus 2 Viewszusammenführen
Wie wärs hiermit
SQL-Code:
select v1.platz, sum(v1.kosten) as Kosten, sum(v2.Minuten) as Minuten
from kostenview v1 left join minutenview v2 on v1.platz=v2.platz group by v1.platz |
Re: SQL Abfrage aus 2 Viewszusammenführen
Hi,
ne da bekomme ich nur die Gleichen Ergebnisse alle von Links raus. Hier mal meine 2 Views.:
SQL-Code:
Ergebniss:
SELECT TOP (100) PERCENT dbo.Lagerbewegung.Technischer_platz, dbo.Lagerbewegung.Platznummer, dbo.Prozess.Besch_Proz,
dbo.Prozess.Prozess_kuerz, dbo.Lagerbewegung.aktuelles_Datum, dbo.Lagerbewegung.Stueckzahl, dbo.Lagerliste.Preis, ROUND(dbo.Lagerliste.Preis * dbo.Lagerbewegung.Stueckzahl, 0) AS P_ST, dbo.Lagerbewegung.Materialkennummer, dbo.Lagerbewegung.Bewegungsnummer, dbo.Tech_PL_Kst.aktiv FROM dbo.Prozess LEFT OUTER JOIN dbo.Tech_PL_Proz ON dbo.Prozess.Prozess_kuerz = dbo.Tech_PL_Proz.Prozess_kuerz RIGHT OUTER JOIN dbo.Lagerbewegung INNER JOIN dbo.Tech_PL_Kst ON dbo.Lagerbewegung.Technischer_platz = dbo.Tech_PL_Kst.Technischer_Platz ON dbo.Tech_PL_Proz.Technischer_Platz = dbo.Lagerbewegung.Technischer_platz AND dbo.Tech_PL_Proz.Platznummer = dbo.Lagerbewegung.Platznummer LEFT OUTER JOIN dbo.Lagerliste ON dbo.Lagerbewegung.Materialkennummer = dbo.Lagerliste.Kennummer WHERE (dbo.Lagerbewegung.Bewegung = N'Abgang') AND (dbo.Lagerbewegung.Stueckzahl > 0) AND (dbo.Lagerliste.Preis > 0) AND (dbo.Tech_PL_Kst.aktiv = 1) ORDER BY dbo.Lagerbewegung.Technischer_platz 01-BDTASSYTEST-2 6 Prozesseingabe PROZ 12.07.2002 07:39:00 16 0,66 11 252 617 True 01-BDTASSYTEST-2 6 Prozesseingabe PROZ 12.07.2002 07:56:00 16 0,94 15 250 618 True 01-BDTASSYTEST-2 6 Prozesseingabe PROZ 12.07.2002 08:36:00 15 0,94 14 250 619 True 01-BDTASSYTEST-2 7 Verschrauben manuell VS_M 12.07.2002 08:36:00 16 0,87 14 256 620 True
SQL-Code:
Ergebniss:
SELECT TOP (100) PERCENT dbo.Aktionsdaten.Kennummer, dbo.Aktionsdaten.Stoer_Zeit, dbo.Aktionsdaten.Technischer_Platz, dbo.Aktionsdaten.Platznummer,
dbo.Aktionsdaten.Prozess, dbo.Aktionsdaten.PM_min, dbo.Prozess.Besch_Proz, dbo.Aktionsdaten.PM_min * 1.33 AS PM_Kosten, dbo.Tech_PL_Kst.aktiv FROM dbo.Aktionsdaten LEFT OUTER JOIN dbo.Tech_PL_Kst ON dbo.Aktionsdaten.Technischer_Platz = dbo.Tech_PL_Kst.Technischer_Platz LEFT OUTER JOIN dbo.Prozess ON dbo.Aktionsdaten.Prozess = dbo.Prozess.Prozess_kuerz WHERE (dbo.Tech_PL_Kst.aktiv = 1) ORDER BY dbo.Aktionsdaten.Technischer_Platz 686 05.06.2001 15:00:00 01-BDTASSYTEST-2 5 VS_M 5 Verschrauben manuell 6,65 True 1376 16.10.2001 07:40:00 01-BDTASSYTEST-2 4 VS_M 5 Verschrauben manuell 6,65 True 1503 16.11.2001 07:25:00 01-BDTASSYTEST-2 8 PROZ 10 Prozesseingabe 13,30 True 5113 16.01.2003 00:00:00 01-BDTASSYTEST-2 1 10 NULL 13,30 True Die Ergebnisse sind nur 3-4 Stück. Die 1. View hat 10712 Datensätze. Die 2. knapp 39000 Ich will eine View oder Select abfrage über beide Views machen damit ich alle Ergebnisse mit Kosten ( einmal Lager und Personall ) rausbekomme aber in einem Zeitraum. Einmal heißt der Zeitraum Stoer_Zeit einmal Aktuelles_Datum. Also müßte ich eine View mache über beide mit Where stoer_zeit between and Aktuelles_Datum between. Aber ich weiß nicht wie ich beide View Ergebnisse zusammenführen kann und Datensätze zu verlieren wie bei Left outer oder Distinct ,union. Danke |
Re: SQL Abfrage aus 2 Viewszusammenführen
Wie wäre es mit
SQL-Code:
Somit hast du immer unterschiedliche Datensätze und beide Tabellen in einer Abfrage.
SELECT
'aus View1' as label, <alles weitere> FROM view1 UNION SELECT 'aus View2' as label, <alles weiter> FROM View2; |
Re: SQL Abfrage aus 2 Viewszusammenführen
Hallo renekr,
versuch mal folgendes...
SQL-Code:
MfG
SELECT spalte1, spalte2 FROM view1 UNION ALL SELECT spalte1, spalte2 FROM view2;
Thorsten |
Re: SQL Abfrage aus 2 Viewszusammenführen
Hi,
also danke erstmal,aber das Problem bei union all ist oder generell bei union ,das beide Select identisch sein müssen. Von der Bezeichnung und vom Datentyp. Und wie man bei mir sieht ist die bezeichnung mal anderst. Ich könnte nur über eine Zwischenview dieSpalten der beiden Views getrennt anpassen,aber das will i nicht unbedingt. PS: Die 1. Select xy as spalte1 funktioniert allerdings nur mit dem union all operator.sonst bekomme ich nicht alle daten raus. Muss nur etwas umdenken . Vielen Dank. danke |
Re: SQL Abfrage aus 2 Viewszusammenführen
Zitat:
Gut, ich habe nie mit SQL-Server bzw. ADO gearbeitet, aber z.B. Oracle oder MySQL sind die Bezeichnungen egal. Hauptsache der Datentyp stimmt. Vieleicht handhabt das MS wiedermal anders ... :angel2: Aber wenn das so ist, brauchst du ja nur deine View-Definitionen anpassen, damit die Bezeichnungen überein stimmen. Oder zu labelst alle Spalten durch. Vlt. funktioniert das. UNION SELECT ist mMn def. der richtige Weg. |
Re: SQL Abfrage aus 2 Viewszusammenführen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz