Zum Inhalt springen

SQL Abfrage über zwei Tabellen


edward12

Empfohlene Beiträge

Einen schönen guten Tag wünsche ich euch.

Nachdem ich die Suche im Forum als auch die google suche betätigt habe, wollte ich mein Anliegen euch vortragen, in der Hoffnung auf Hilfe.

Sachverhalt:

Ich darf eine Abfrage erstellen, welche sich über mehrere Tabellen erstreckt.

Aufzeigen werde ich die Stelle an der ich nicht weiterkomme.

Tabelle 1) Vorgangkalk

[table=width: 300]

[tr]

[td]ROWVORGANG[/td]

[td]BEREICH[/td]

[td]FLNETTO[/td]

[/tr]

[tr]

[td]48[/td]

[td]S[/td]

[td]100[/td]

[/tr]

[tr]

[td]48[/td]

[td]I[/td]

[td]300[/td]

[/tr]

[/table]

Tabelle2) Vorgang

[table=width: 200]

[tr]

[td]ROWVORGANG[/td]

[td]BETREFF[/td]

[/tr]

[tr]

[td]48[/td]

[td]TEST[/td]

[/tr]

[/table]

Die Zieltabelle stelle ich mir so vor:

[table=width: 500]

[tr]

[td]ROWVORGANG[/td]

[td]BETREFF[/td]

[td]SOLL[/td]

[td]IST[/td]

[/tr]

[tr]

[td]48[/td]

[td]test[/td]

[td]100[/td]

[td]300[/td]

[/tr]

[/table]

Der Code hierfür sieht wie folgt aus:

DECLARE @SOLL decimal(14,2), @IST decimal(14,2)


SELECT @IST= FLNETTO FROM DB.dbo.VORGKALK , DB.dbo.VORGANG WHERE VORGKALK.BEREICH= 'I' AND VORGKALK.ROWVORGANG='48';

SELECT @SOLL= FLNETTO FROM DB.dbo.VORGKALK WHERE VORGKALK.BEREICH= 'S' AND VORGKALK.ROWVORGANG='48'



SELECT

Vorgangs.VORGANGNR,

Vorgangs.BETREFF AS BAUVORHABEN,

@SOLL AS Fremdleistung,

@IST AS "FL Rueck"


FROM

DB.dbo.VORGANG Vorgangs,

DB.dbo.VORGRECHNUNG VRECHNUNG,

DB.dbo.VORGKALK VORGANGK


WHERE

Vorgangs.ROWVORGANG=VRECHNUNG.ROWVORGANG AND

Vorgangs.ROWVORGANG=VORGANGK.ROWVORGANG


GROUP BY

Vorgangs.VORGANGNR,

Vorgangs.BETREFF,

VORGANGK.FLNETTO

Das Problem welches ich nun habe, ist das ich ja festlege, dass er nur die Werte von der ROWVORGANG nimmt. Würde ich hier, wie es für mich richtig wäre, folgendes eingeben:
SELECT @IST= FLNETTO FROM DB.dbo.VORGKALK , DB.dbo.VORGANG WHERE VORGKALK.BEREICH= 'I' AND VORGKALK.ROWVORGANG=VORGANG.ROWVORGANG;

SELECT @SOLL= FLNETTO FROM DB.dbo.VORGKALK WHERE VORGKALK.BEREICH= 'S' AND VORGKALK.ROWVORGANG=VORGANG.ROWVORGANG'

So fügt er bei den Feldern SOLL und IST eine 0 ein, da der allererste Vorgang (Nr.1) den Zahlenwert 0 hat.

Also scheint das Problem zu sein, dass die Variabeln nur einmalig gefüllt werden.

Gibt es hier eine einfachere Lösung oder müsste ich um weiter mit Variabeln zu arbeiten es hinbekommen, dass Zeilen weise gearbeitet wird? Und wenn ja wie geht das?

Ich habe es mit einer while Schleife versucht, hier legt er je durchlauf eine neue Tabelle an.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Geht mit Subselects relativ leicht ... (hattest du ja fast)


select 

`Vorgang`.ROWVORGANG

,(select VORGANGK2.FLNETTO from `vorgangkalk` as VORGANGK2 where VORGANGK2.ROWVORGANG = `Vorgang`.ROWVORGANG and VORGANGK2.BEREICH = 'S' limit 1) as SOLL

,(select VORGANGK1.FLNETTO from `vorgangkalk` as VORGANGK1 where VORGANGK1.ROWVORGANG = `Vorgang`.ROWVORGANG and VORGANGK1.BEREICH = 'I' limit 1) as IST

,`Vorgang`.BETREFF 

from vorgang as `Vorgang`

Ein Problem könnte es noch geben wenn du in der Tabelle "Vorgangkalk" mehr als nur einen Eintrag pro "BEREICH" und "ROWVORGANG" hast, dann bräuchtest du noch eine weitere Bedingung sodass im subselect nur ein Ergebnis zurück kommt (z.b. ein datum >- das im subselect ins order by asc/desc und schon hast du von den Datensätzen nur das neuste oder das älteste).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...