AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage aus 2 Viewszusammenführen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage aus 2 Viewszusammenführen

Ein Thema von renekr · begonnen am 3. Jun 2006 · letzter Beitrag vom 15. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

SQL Abfrage aus 2 Viewszusammenführen

  Alt 3. Jun 2006, 09:57
Datenbank: SQL Server 2005 • Version: 2005 STD • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
mirko2000

Registriert seit: 9. Nov 2003
69 Beiträge
 
#2

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 3. Jun 2006, 10:09
Versuchs mal mit der UNION-Abfrage:

SELECT spalte1, spalte2 FROM view1 UNION SELECT spalte1, spalte2 FROM view2; Damit erhältst du eine Ergebnisliste mit beiden Abfragen.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 3. Jun 2006, 10:21
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 3. Jun 2006, 11:58
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
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 3. Jun 2006, 12:02
Hi,
ne da bekomme ich nur die Gleichen Ergebnisse alle von Links raus.

Hier mal meine 2 Views.:

SQL-Code:
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
Ergebniss:
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:
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
Ergebniss:
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
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 13. Jun 2006, 15:38
Wie wäre es mit
SQL-Code:
SELECT
   'aus View1as label,
   <alles weitere>
FROM
   view1
UNION SELECT
   'aus View2as label,
   <alles weiter>
FROM
   View2;
Somit hast du immer unterschiedliche Datensätze und beide Tabellen in einer Abfrage.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 13. Jun 2006, 19:12
Hallo renekr,

versuch mal folgendes...

  SELECT spalte1, spalte2 FROM view1 UNION ALL SELECT spalte1, spalte2 FROM view2; MfG
Thorsten
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 14. Jun 2006, 07:00
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
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 14. Jun 2006, 10:29
Zitat von renekr:
...aber das Problem bei union all ist oder generell bei union ,das beide Select identisch sein müssen.
Von der Bezeichnung und vom Datentyp.
Also das ist mir neu. Vom Datentyp her ja, aber auch die Bezeichnungen ...

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

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.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: SQL Abfrage aus 2 Viewszusammenführen

  Alt 14. Jun 2006, 17:20
Zitat von renekr:
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 ...
Das ist bei MSSQL genauso...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz