Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi View's über 2 Tabellen und Kartesisches Produkt (https://www.delphipraxis.net/37618-views-ueber-2-tabellen-und-kartesisches-produkt.html)

jensw_2000 8. Jan 2005 12:42

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Code:
Hi Klaus,

soll das nachher so aussehen

Datum       Buchungstext       Betrag
---------------------------------------
01.01-2005   z.B. ReNr:         100,00
01.01.2005   Ausgabe 1234        -80,00

oder so ?

Datum       Buchungstext       Einnahme           Ausgabe
------------------------------------------------------------
01.01-2005   z.B. ReNr:         100,00
01.01.2005   Ausgabe 1234                             80,00

Klaus D. 8. Jan 2005 12:52

Re: View's über 2 Tabellen und Kartesisches Produkt
 
genau so.
sorry ich habe mit SQL nicht all zu viel Erfahrung
-------------------
Datum Buchungstext Einnahme Ausgabe
------------------------------------------------------------
01.01-2005 z.B. ReNr: 100,00
01.01.2005 Ausgabe 1234 80,00

MfG..Klaus

Jelly 8. Jan 2005 13:10

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Na dann will ich mal probieren, ungetestet:
SQL-Code:
( select Datum, Rechnungsnummer as Buchungstext, Betrag as Einnahme from Tabelle1, null as Ausgabe
    where Month(Datum) = 12 and Year(Datum) = 2004
  union all
  select Datum, Material as Buchungstext, null as Einnahme, Betrag as Ausgabe
    where Month(Datum) = 12 and Year(Datum) = 2004
)

order by 1
Das mit der Month und Year Funktion ist Datenbankabhängig. Schlag dafür die Doku deiner Datenbank auf, da sollt sowas drin stehn. Oder nenn uns mal das System.

NULL kannst du auch durch 0 (Zahl null) ersetzen, je nach Belieben. Hätte dann den Vorteil daß du mit diesen Werten auch rechnen kannst. NULL z.B. macht unter MSSQL Probleme. Dinge wie sum(1+1+1+NULL) ergeben dort NULL, und nicht 3 wie vielleicht erwünscht... Probier einfach mal aus... Im Prinzip sollte die Abfrage jedoch so in der Art funktionieren.

Klaus D. 8. Jan 2005 13:37

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Danke werd'gleich mal testen
MfG...Klaus :thumb:

Klaus D. 8. Jan 2005 15:25

Re: View's über 2 Tabellen und Kartesisches Produkt
 
2 Sachen verstehe ich nicht:'order by 1' wieso 1
'null as Einnahme' was ist null

kann man anstatt das Datum statisch vorzugeben auch Platzhalter nutzen ?
MfG...Klaus

Jelly 8. Jan 2005 16:11

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Zitat:

Zitat von Klaus D.
2 Sachen verstehe ich nicht:'order by 1' wieso 1

in der order by Klausel steht die 1 für die erste Spalte. Du kannst hier nicht den Namen der Spalte angeben, da du ein Union von 2 Select Abfragen hast.

Zitat:

Zitat von Klaus D.
'null as Einnahme' was ist null

NULL steht quasi für leer. Da steht dann also nichts in der Spalte. Im Gegenzug steht 0 für die Zahl null. Das ist ein Unterschied.

Zitat:

Zitat von Klaus D.
kann man anstatt das Datum statisch vorzugeben auch Platzhalter nutzen ?

Was meinst du mit Platzhalter? Etwa die Params aus deiner Query. Also so wie
SQL-Code:
select ... where Month(Datum) = :Monat
Dann ist die klare Antwort ja, geht problemlos. Nur dran denken den Datentyp von :Monat als Integer zu nehmen.

Klaus D. 8. Jan 2005 16:18

Re: View's über 2 Tabellen und Kartesisches Produkt
 
gleich das nächste Problem
Code:
       SELECT ARBEITSDATUM as Datum
            , Rechnung_NR as Buchungstext
            , SUM(ZEIT * LOHN) AS Einnahmen
        FROM tbl_Rechnung
WHERE MONTH (ARBEITSDATUM ) = 01
    AND YEAR (ARBEITSDATUM ) = 2005

union all

       SELECT Datum
            , Material as Buchungstext
            , Einlagen AS Einnahmen
        FROM tbl_Kosten
WHERE MONTH (datum) = 01
    AND YEAR (datum) = 2005
Der Wert Lohn liegt in der Tabelle Rechnung nur als Schlüssel vor, der eigentliche Wert steht in der Tabelle Lohn.
Tabelle Rechnung:
sid_Lohn sek Schlüssel
Tabelle Lohn:
ID pr.Schlüssel
Lohn Datenfeld
ich wollte jetzt folgendes im ersten SELECT unterbringen klappt aber irgenwie nicht.
Code:
Inner JOIN  tbl_Lohn
        ON  tbl_Rechnung.SID_LOHN = tbl_Kosten.ID
MfG...Klaus
Ich hoffe ich nerve nicht all zu doll. :cheers:

Jelly 8. Jan 2005 16:23

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Zeig mal deinen kompletten SQL Befehl, der nicht funktioniert.

jensw_2000 8. Jan 2005 16:26

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Die schreibweise Order by 1 habe ich auch zur erstem mal gesehen. Ich denke es bedeutet Order by Datum (also Spalte 1).

Das Datum kann man durch Parameter ersetzen.
Schau dir das mal an ..SQL-Anfrage mit 2 Parametern

:hi:

omata 8. Jan 2005 16:45

Re: View's über 2 Tabellen und Kartesisches Produkt
 
Moin,

dann melde ich mich auch mal wieder...

Also ORDER BY 1 gibt an, dass nach der ersten Spalte sortiert werden soll.
Da beide Spalten Datum heissen kann hier auch ORDER BY datum stehen.
Es wird sowieso immer die erste SELECT-Anweisung ausgewertet, also wenn in der zweiten SELECT-Anweisung die erste Spalte anders heissen würde, würde die Angabe ORDER BY datum auch funktionieren (bei MSSQL)

AS ändert die Spaltenbezeichnung. Hier muss man allerdings aufpassen, die MsQuery (Officepaket) überliesst das AS und liefert einen Fehler. Dort muss man diese Namensänderung immer in eine Unterabfrage verschlieben.

Also einfach ein...

SELECT *
FROM (

eingentliche Abfrage

) x

MfG
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.
Seite 2 von 3     12 3      

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