Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access, subtrahieren zweier Datensätze

Frage Microsoft Microsoft Office

Mitglied: etnobommel1989

etnobommel1989 (Level 1) - Jetzt verbinden

13.02.2011, aktualisiert 14.02.2011, 17350 Aufrufe, 19 Kommentare

Tabelle Umsatz mit einer Spalte Wert

Hey Leute,

in Excel ist so etwas ganz einfach zu lösen, da rechne ich einfach z.B. A3-A2 und ziehe dies einfach runter, so dass dann A4-A3 usw. kommt.

Wie kann ich das in Access bewältigen?? SQL??

Danke
Mitglied: NetWolf
13.02.2011 um 20:18 Uhr
Moin Moin,

so schwer es fällt, vergiss Excel.

Tabellen sind in Access ausschließlich dafür da, Daten zu speichern.
Auswertungen, Bearbeiten und Anzeigen werden über Formulare und Berichte gemacht.

Berechnungen kann man sowohl in Formularen und Berichten durchführen, als auch Abfragen (SQL) dafür nutzen.

Die Frage ist also: was willst du als Ergebnis erreichen?


Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 07:43 Uhr
Ähhm ich will, wie oben beschrieben eine Abfrage gestalten, wo die Spalte der Tabelle Umsatz drin vorkommt.

Also:

SELECT Wert
FROM Umsatz;

und daneben möchte ich die Differenz, der beiden Datensätze

Wert || Differenz

1 ||
2 || 1
3 || 1
4 || 1
5 || 1
8 || 3
2 || -6

Also ich will in der Abfrage die Spalte Differenz noch bilden.
Bitte warten ..
Mitglied: Biber
14.02.2011 um 09:43 Uhr
Moin etnobommel1989,

ich bin nicht sicher, ob es sich wirklich noch lohnt, solche Kunststückchen für "Wetten dass.." einzuüben -
angeblich will sich der Thomas "ForEverYoung" Gottschalk doch ganzjährig zum Winterschlaf in seine Schweineschwarten-Goldbärenhöhle zurückziehen.

Ich hatte dir doch neulich in einem ähnlichen Beitrag geschrieben, dass die physikalische Reihenfolge von Datensätzen in einer Datenbanktabelle vollkommen willkürlich und zufällig ist.
Eine Abfrage "SELECT wert FROM Umsatz" allerdings ist nicht nur unter Datenbankgesichtspunkten albern.

Ein "Umsatz" hängt doch nicht frei schwebend im Raum, sondern beschreibt doch so etwas wie "Preis*Stückzahl" bezogen auf einen oder mehrere Artikel.
Und vor allem auf einen Zeitraum (Tag oder Monat oder Quartal) bezogen.

Du kannst doch unmöglich nur Tabellen haben, die aus einer Autowert-Spalte und einem Nutzfeld bestehen.
Und doch nicht nur Fragestellungen, die sich auf Vorgänger-Nachfolger-beziehungen beziehen.

Dafür ist doch eine Datenbank nur geeignet, wenn du auch Vorgänger und Nachfolger/Parent und Child logisch verkettest.
Einfach nur alle Daten in eine lange lange Reihe kippen und dann Umsatzdifferenzen bilden - das mag ein Plan sein, aber er könnte noch verfeinert werden.

Wie sieht den jetzt die "Umsatz"-Tabelle wirklich aus - vor allem, was ist der identifizierende Schlüssel und/oder die Sortierreihenfolge?

Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 09:55 Uhr
Es ist in Wirklichkeit eine andere Tabelle, ich will es nur zur Veranschaulichung und als Beispiel, nur will ich hier nicht meine reelen Tabellen posten, wie gesagt es geht mir hierbei nur ums Prinzip, den vorherigen Datensatz zu subtrahieren, ob das machbar ist oder nicht, zudem ginge dies beim ersten Datensatz ja nicht weil davor noch kein Datensatz vorhanden ist, also müsste er beim zweiten Datensaetz anfangen und den ersten Datensatz subtrahieren und das Ergebnis daneben in einer weiteren Spalte , nennen wir sie "Differenz" ausgeben.

Geht sowas in Access überhaupt? Wenn ja wäre nett wenn mir einer verrät wie??

Ich zähl auf dich Biber!!!

Gruß Marcus
Bitte warten ..
Mitglied: Biber
14.02.2011 um 10:05 Uhr
Moin etnobommel1989,

nochmal...
zudem ginge dies beim ersten Datensatz ja nicht weil davor noch kein Datensatz vorhanden ist,
also müsste er beim zweiten Datensaetz anfangen und den ersten Datensatz subtrahieren

Es gibt in Datentabellen keinen "ersten" und keinen "zweiten" Datensatz.
Du bist gedanklich noch in Excel... da kannst du automatisch eine Zeile eingeben und der Cursor springt in die nächste Zeile.
Und ganz links steht dort eine Zeilennummer 1, 2, 3, ...viele.

Jetzt sind wir bei Datenbanktabellen. Da kannst du nicht sagen "Ziehe Wert von Satz 16 vom Wert von Satz 15 ab".

Wenn du die Struktur deiner "umsatz"-Tabelle nicht preisgeben kannst wegen dieser ganzen Designpiraten, die das abkupfern, dann gib uns eine Tablle "Fritz" oder "Heinz". Aber bitte mit der Info (wie oben schon gebettelt)
...was ist der identifizierende Schlüssel und/oder die Sortierreihenfolge?

Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 10:13 Uhr
777af269c331219dfa17b7ed24316803 - Klicke auf das Bild, um es zu vergrößern


Es ist alles aufsteigend nach Runde sortiert


Die Tabelle heißt Dutzend
Bitte warten ..
Mitglied: Biber
14.02.2011 um 10:49 Uhr
Moin etnobommel1989,

01.
SELECT a.Runde, a.Dutzend,  
02.
          a.Runde-(select max(Runde) from etno where Runde < a.runde) as Differenz 
03.
FROM etno a;
Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 11:00 Uhr
Passt alles so soll es aussehen, nur Leider ist die Spalte Differenz leer.
Bitte warten ..
Mitglied: Biber
14.02.2011 um 11:10 Uhr
Tja,

bei mir sieht es so aus:
01.
Runde	Dutzend	Differenz 
02.
1	L	 
03.
3	L	2 
04.
7	L	4 
05.
8	L	1 
06.
13	L	5 
07.
16	L	3 
08.
17	L	1 
09.
25	L	8 
10.
26	L	1 
11.
29	L	3 
12.
30	L	1 
13.
38	L	8
Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 11:16 Uhr
a ist ja in meinem Falle Dutzend, weil die Tabelle Dutzend heißt und was soll das "FROM etno a"
Bitte warten ..
Mitglied: Biber
14.02.2011 um 11:30 Uhr
moin etnobommel1989,

a ist ja in meinem Falle Dutzend, weil die Tabelle Dutzend heißt und was soll das "FROM etno a"
Dann bitte ersetze überall in meinem Statement den Tabellennamen "etno" durch "Dutzend".

Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 11:37 Uhr
Aus diesem a am Ende macht dann Access automatisch ein "AS a" und wenn ich die Abfrage jetzt öffne kommt gar nix mehr, also die Abfrage lässt sich nicht öffnen, kann das daran liegen, dass Dutzend keine Tabelle sonder auch schon eine Abfrage ist, müsste doch aber troztdem genau so gehen, oder??
Bitte warten ..
Mitglied: Biber
14.02.2011 um 12:18 Uhr
Moin etnobommel1989,

wenn dieses Access meint, statt "...FROM dutzend a" besser "...FROM dutzend AS a" schreiben zu müssen...
Derlei konstruktive Verbesserungen habe ich schon damals bei meiner Ex-Schwiegermutti geliebt.

Und ja, natürlich darfst du auch auf eine Abfrage statt auf eine Tabelle zugreifen und nochmals ja, du darfst deine Abfragen auch "Dutzend" nennen,
wenn das dem Dokumentationsanspruch deines Cheffes genügt.

Also - statt Tabelle "Umsatz" mit Spalte "Wert" haben wir jetzt eine Abfrage "Dutzend" mit zwei Spalten "Runde" und "Dutzend" ..
Noch irgendwelche Details, die relevant sein könnten?

Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 12:25 Uhr
SELECT a.Runde, a.Dutzend, a.Runde-(select max(Runde) from Dutzend_1 where Runde < a.runde) AS Differenz
FROM Dutzend_1 INNER JOIN Dutzend_1 AS a ON [Dutzend_1].[Runde]=a.Runde;

so geht es


Danke für alle tipps
Bitte warten ..
Mitglied: wiesi200
14.02.2011 um 12:42 Uhr
Hallo,

nur so als kleine Randanmerkung. Microsoft nutzt an einer Stelle fast genau die gleich Berechnung.

http://de.wikipedia.org/wiki/Microsoft_Dynamics_NAV

im Punkt: SIFT Technologie
Bitte warten ..
Mitglied: Biber
14.02.2011 um 13:01 Uhr
Moin wiesi200,

weitere Parallele: die Redmonder Nachwuchstalente halten ebenfalls einen INNER JOIN auf sich selbst für übertrieben.

@etnobommel1989
Stimmt es denn, dass sich die SQL-Formulierung
SELECT ... ...FROM Dutzend_1 INNER JOIN Dutzend_1 AS a ON [Dutzend_1].[Runde]=a.Runde
.. übersetzen liesse mit "Hole mir ... aus Tabelle Dutzend_1, aber nur die Sätze, die auch in dieser Tabelle vorhanden sind"?

Egal, Haken is' dran...

Grüße
Biber
Bitte warten ..
Mitglied: etnobommel1989
14.02.2011 um 14:50 Uhr
Mich würde trotzdem mal interressieren wie des bei dir ohne den inner join geklappt hat, access erkennt des doch gar net wenn man schreibt "FROM Dutzend a"
Bitte warten ..
Mitglied: Biber
14.02.2011 um 15:20 Uhr
Wieso erkennt access das nicht?

Wenn ich auf einen oder beide Aliasnamen verzichten würde, dann wären öfters mal einzelne Spalten (insbesondere "Differenz") leer.
Weil Access dann z.b. das Feld "Runde" aus der falschen (logischen) Tabelle holt.

Die einzige Schreibweise, mit der ich unterstellen kann, dass
a) ich weiss, welche Felder ich miteinander vergleichen will und
b) auch Access weiss, welche Felder ich meine
..ist doch JEDES irgendwo angegebene Anzeige- oder Vergleichsfeld mit einem Alias anzusprechen.

Unmissverständlich auch für den Access-Parser/die Access-Parserin:
01.
SELECT a.Runde, a.Dutzend, a.Runde-(select max(x.Runde)  from dutzend_1 x where x.Runde < a.runde) AS Differenz 
02.
FROM dutzend_1 a;
vollkommen gleichbedeutend mit
01.
SELECT a.Runde, a.Dutzend, a.Runde-(select max(x.Runde)  from dutzend_1 AS x where x.Runde < a.runde) AS Differenz 
02.
FROM dutzend_1 AS a;
Und minimal (aber eben möglicherweise missverständlich) wäre für eine der beiden logischen Tabellen "Dutzend_1" ein Alias erforderlich.

Was macht denn eigentlich der Parallelthread mit dem Münzen-aufn-Kopp-hau-Problem? Auch erledigt?

Grüße
Biber
Bitte warten ..
Mitglied: ralfol
14.02.2011 um 23:04 Uhr
Hallo,
ich würde es mit VBA machen.

Beispl. Tab oder Abfrage zum selectieren.
Tabelle Test -> Felder Wert + ergeb

ohne SQL und mit jeder möglichen aritmetik.

Beispiel code:

Sub add_altwert()

Dim Altwert As Long
Dim db As Database, wertTab As Recordset
Set db = CurrentDb
Set wertTab = db.OpenRecordset("Test", dbOpenDynaset)
With wertTab
.MoveFirst
Altwert = ![wert]
.MoveNext
Do Until .EOF
.Edit
![ergeb] = ![wert] + Altwert
.Update
Altwert = ![wert]
.MoveNext
Loop
.Close
End With
End Sub
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft
gelöst Zwei Datumsangaben in Access subtrahieren in der Entwurfansicht? (2)

Frage von bananajo05 zum Thema Microsoft ...

LAN, WAN, Wireless
Freifunk über vorhandene Access Points ausstrahlen (2)

Frage von Uwoerl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Direct Access mit VPN aufbau (6)

Frage von geocast zum Thema Windows Netzwerk ...

Microsoft Office
gelöst Access 2007 (2)

Frage von Everest zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...