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, 18358 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 ..
Ähnliche Inhalte
Datenbanken
Access Datenbank wie am einfachsten Datensätze aufbereiten (5)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

VB for Applications
gelöst VBA Code Änderung Access 2010 (6)

Frage von Dr.Cornwallis zum Thema VB for Applications ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (38)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

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

Netzwerke
VPN-Server einrichten PPTPD-Einrichtung gescheitert (15)

Frage von MIlexx zum Thema Netzwerke ...