![]() |
View's über 2 Tabellen und Kartesisches Produkt
Moin
helft mir bitte mal auf die Sprünge ! ich habe 2 von einander getrennte Tabellen, möchte sie aber sinnvoll als Druckvorschau zusammenfassen. .......... aus Tabelle 1 möchte ich alle Datensätze die im Monat 12.2004 angelegt wurden. aus Tabelle 2 möchte ich auch alle Datensätze die im Monat 12.2004 angelegt wurden. Ich möchte das mit nen 'VIEW' realisiern bekomme aber logischer Weise ein Kartesisches Produkt und ich habe kein Plan wie ich der Sache etwas näher komme. Mfg ...Klaus :gruebel: |
Re: View's über 2 Tabellen und Kartesisches Produkt
Moin,
benutze doch einen UNION... SELECT * FROM tabelle1 WHERE MONTH(datum) = 12 AND YEAR(datum) = 2004 UNION ALL SELECT * FROM tabelle2 WHERE MONTH(datum) = 12 AND YEAR(datum) = 2004 Beide Anweisungen müssen die gleichen Spalten haben. Dies ist die Variante für den MSSQL-Server. MfG Thorsten |
Re: View's über 2 Tabellen und Kartesisches Produkt
Moin mit SELECT ID..........klappt alles Danke!!!
Mein Problem ist nur,das es sich um 2 grund verschiedene Tabellen handel die einzige gemeinsamkeit ist halt 'ID'. kann man so etwas überhaupt zusammenführen, um so mehr ich drüber nachdenke um so blödsinniger kommt es mit vor. MfG...Klaus |
Re: View's über 2 Tabellen und Kartesisches Produkt
Zitat:
Vielleicht helfen dir Joins weiter. |
Re: View's über 2 Tabellen und Kartesisches Produkt
Welche DB benutzt du ?
So könntest du es auch noach machen ... angenommen aus Tabelle 1 willst du die Spalten Name, Vorname und Geburtstag und aus Tabelle 2 willst du die Spalten Nachname, Vorname und geb_am in einer Abtrage zusammenfassen ...
SQL-Code:
[Edit]
SELECT ID, Name, Vorname, Geburtstag as 'geboren am'
FROM tabelle1 WHERE MONTH(datum) = 12 AND YEAR(datum) = 2004 UNION SELECT Nachname as 'Name', Vorname, geb_am as 'geboren am' FROM tabelle2 WHERE MONTH(datum) = 12 AND YEAR(datum) = 2004 Joins kommen in Frage wenn du in Tabelle 1 ID, Vormane und Nachname hast und in Tabelle 2 ID, ID_Tabelle_1, Geburtstag und Geburtsort und diese dann halt zusammenfassen möchtest [/Edit] |
Re: View's über 2 Tabellen und Kartesisches Produkt
Zitat:
|
Re: View's über 2 Tabellen und Kartesisches Produkt
@Jelly
Ich denke ich weis was er vor hat ... :mrgreen: Tabelle 1 (Lohn): ID_Auftrag, AuftragsDatum, Arbeitszeit, StundenVerrechnungssatz, Positionssumme Tabelle 2 (Material): ID_Auftrag, AuftragsDatum, Menge, EP, Positionssumme |
Re: View's über 2 Tabellen und Kartesisches Produkt
es handelt sich um ADS-Tabellen
so... //positive Einnahmen Tabelle 1(bareinnahmen) : -ID /AutoInc -Rechnungsnummer /Character-setzt sich aus Teil des Datum und fortlaufender Nummer zusamen -Datum /Date -Betrag /Courdouble //negative Einnahmen(laufende Kosten) Tabelle 2(Ausgaben): -ID /AutoInc -Material /Character -Datum /Date -Betrag Courdouble ---------------------- ich möchte ganz einfach dem Anwender die Möglichkeit geben am Ende eines Monats alle Einnahmen und Ausgaben wie ein Kassenbuch auszudrucken oder als Monatliche Abrechnung zu speichern. MfG...Klaus gerade neu bearbeitet...Klaus |
Re: View's über 2 Tabellen und Kartesisches Produkt
Zitat:
|
Re: View's über 2 Tabellen und Kartesisches Produkt
der Betrag befindet sich jeweils in der selben Tabelle.
"bitte keinen Vortrag über Normalisierung...u.s.w."ich versuche einzig mit den mir zur Verfügung stehenden Daten am Ende einen Report auf die Beine zu stellen. MfG...Klaus |
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 |
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 |
Re: View's über 2 Tabellen und Kartesisches Produkt
Na dann will ich mal probieren, ungetestet:
SQL-Code:
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.
( 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 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. |
Re: View's über 2 Tabellen und Kartesisches Produkt
Danke werd'gleich mal testen
MfG...Klaus :thumb: |
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 |
Re: View's über 2 Tabellen und Kartesisches Produkt
Zitat:
Zitat:
Zitat:
SQL-Code:
Dann ist die klare Antwort ja, geht problemlos. Nur dran denken den Datentyp von :Monat als Integer zu nehmen.
select ... where Month(Datum) = :Monat
|
Re: View's über 2 Tabellen und Kartesisches Produkt
gleich das nächste Problem
Code:
Der Wert Lohn liegt in der Tabelle Rechnung nur als Schlüssel vor, der eigentliche Wert steht in der Tabelle Lohn.
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 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:
MfG...Klaus
Inner JOIN tbl_Lohn
ON tbl_Rechnung.SID_LOHN = tbl_Kosten.ID Ich hoffe ich nerve nicht all zu doll. :cheers: |
Re: View's über 2 Tabellen und Kartesisches Produkt
Zeig mal deinen kompletten SQL Befehl, der nicht funktioniert.
|
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 .. ![]() :hi: |
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 |
Re: View's über 2 Tabellen und Kartesisches Produkt
Code:
ohne SUM und Join klappt alles
SELECT ARBEITSDATUM as Datum
, Rechnung_NR as Buchungstext , SUM(tbl_Rechnung.ZEIT * tbl_Lohn.LOHN) AS Einnahmen FROM tbl_Rechnung Inner JOIN tbl_Lohn ON tbl_Rechnung.SID_LOHN = tbl_Lohn.ID 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 MfG...Klaus Ps: nicht das ihr denkt ich mach es mir hir aber einfach,habe hir 3Bücher zu liegen(nur SQL). aber die besten Antworten finde ich halt im Forum. Danke |
Re: View's über 2 Tabellen und Kartesisches Produkt
Da Sum eine Aggregat-Funktion ist, mußt du nach den restlichen Feldern gruppieren:
SQL-Code:
SELECT ARBEITSDATUM as Datum
, Rechnung_NR as Buchungstext , SUM(tbl_Rechnung.ZEIT * tbl_Lohn.LOHN) AS Einnahmen FROM tbl_Rechnung Inner JOIN tbl_Lohn ON tbl_Rechnung.SID_LOHN = tbl_Lohn.ID WHERE MONTH (ARBEITSDATUM ) = 01 AND YEAR (ARBEITSDATUM ) = 2005 GROUP BY Datum, Rechnung_NR union all SELECT Datum , Material as Buchungstext , Einlagen as Einnahmen FROM tbl_Kosten WHERE MONTH (datum) = 01 AND YEAR (datum) = 2005 |
Re: View's über 2 Tabellen und Kartesisches Produkt
Ich noch mal...Hallo
bin nun tüchtig am SQL üben. folgenden Versuch:
Code:
klappt natürlich nicht. muß ich wieder mit GROUP BY arbeiten? und wo muß es eigentlich stehen
SELECT RE.Arbeitsdatum_Von
,RE.Arbeitsdatum ,RE.Rechnung_Nr ,RE.Man_Leistung ,RE.Man_Leistung_Memo ,RE.Zeit ,RE.Preis ,LE.Leistung ,SUM(Zeit * Preis) as Gesamt FROM tbl_Rechnung RE Inner JOIN tbl_Leistung LE ON RE.SID_Leistung = LE.ID WHERE RE.SID_Rechnung_NR =:ID MfG...Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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 by Thomas Breitkreuz