Saban Geschrieben 3. September 2008 Geschrieben 3. September 2008 (bearbeitet) Guten Morgen! also falls ihr den Titel noch nicht verstanden habt ich habe eine Datenbank mit mehreren Tabellen. In der einen Tabelle habe ich die Spalten EinkaufsNr, Menge, Verkaufspreis und in der anderen EinkaufsNr, Gesamtbetrag. Nun möchte ich je nach EinkaufsNr die Spalten Menge und Verkaufspreis miteinander multiplizieren und das Ergebnis in die Spalte Gesamtbetrag schreiben. Nur leider komme ich nicht sehr weit... Mein Code sieht bis jetzt folgendermaßen aus:result = stmt.executeQuery( "INSERT INTO Einkauf(Gesamtbetrag) " + "SELECT Einkaufsposition.Verkaufspreis * Einkaufsposition.Menge AS summe " + "FROM Einkaufsposition, Einkauf " + "WHERE Einkauf.EinkaufsNr = Einkaufsposition.EinkaufsNr "); Edit:\\ ******e falsches Forum??? Versuche mit Java auf Access Datenbank zuzugreifen bin ich hier richtig oder nicht??? MfG Saban Bearbeitet 3. September 2008 von Saban Zitieren
Enno Geschrieben 3. September 2008 Geschrieben 3. September 2008 Aehm, ich würde die zweite Tabelle nicht als Tabelle sondern als View anlegen. Denn das zweite ist ja immer nur ein Blick auf die erste Geschichte. Also Tabelle: Einkaufsnr., Menge, VKPreis View: Einkaufsnr, Gesamtbetrag as: Menge*VKPreis Zitieren
TDM Geschrieben 3. September 2008 Geschrieben 3. September 2008 1. NF: Jedes Attribut der Relation muss einen atomaren Wertebereich haben. (Statt „atomar“ wird auch die Bezeichnung „atomisch“ verwendet.) D.h. keine berechenbaren Spalten in einer Tabelle. Zitieren
Youser Geschrieben 3. September 2008 Geschrieben 3. September 2008 Wie wärs, einfach die DB als gegeben zu betrachten statt am DB-Design rumzuschlaumeiern. Fällt mir immer wieder auf, dass irgendwelche Leute bei SQL-Fragen am DB-Design rummeckern, welches aber überhaupt nicht zur Diskussion steht. Und es gibt sehr wohl Gründe berechnete Werte in einer Tabelle zu speichern. Lediglich berechnete Werte innerhalb der gleichen Tabelle zu speichern ist nich ok. Gründe können in der Performance oder auch in der Geschäftslogik liegen. Etwa wenn ein berechneter Preis in ner Tabelle gespeichert wird. Es kann sein, dass die Details zur Preisberechnung sich im laufe des Tages ändern, etwa weil user irgendwo eingaben und Änderungen machen. Der Preis soll sich aber nicht ständig ändern, sondern erst am nächsten Tag aktualisiert sein, ggf nachdem alles nochmal geprüft wurde. Folglich wird nachts die Preistabelle aktualisiert und hat wiederum nen Tag lang bestand. Mein Tipp wär, die gewünschte SQL-Abfrage in deinem Fall erstmal in Access zurecht zu basteln. Da solltest du bessere Fehlermeldungen bekommen und einfacher testen können. Zitieren
Saban Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 Hallo! Danke erst mal für die Posts! Also erst mal die Aufgabe wurde mir so gestellt ich soll mich damit nur in DBs einarbeiten. Des ist nur ein Beispiel. Des nächste ist das ich des in der Access DB schon probiert habe aber wie gesagt bin Neuling und habe keine Ahnung wie ich nen SubSelect bei nem Anfragen-Entwurf in Access erstellen kann. Es muss auf alle Fälle mit einem SubSelect gelöst werden hat mein Chef gemeint. hat jemand ne idee? MfG Saban Zitieren
flashpixx Geschrieben 3. September 2008 Geschrieben 3. September 2008 Klappt das Statement, wenn Du es direkt auf der DB ausführst? Wie lautet die Fehlermeldung? Mein Tipp verwende PrepareStatements in Java HTH Phil [edit] Wie greift Du auf Access zu JDBC + ODBC? Zitieren
Dragon8 Geschrieben 3. September 2008 Geschrieben 3. September 2008 Ich denke mal, du wirst die beiden Statements in Java einzeln abarbeiten müssen. Wenn mich nämlich nicht alles täuscht, beherrscht Access keine Subselects. Zitieren
flashpixx Geschrieben 3. September 2008 Geschrieben 3. September 2008 (bearbeitet) I Wenn mich nämlich nicht alles täuscht, beherrscht Access keine Subselects. Ich meine auch, aber 100%ig sicher bin ich nicht, evtl kann sich da auch was von Version zu Version unterscheiden. Deshalb würde ich das Statement erst mal direkt testen. Evtl ließe sich da auch was über einen "View" (Abfrage) realisieren. Phil Bearbeitet 3. September 2008 von flashpixx FullQuote geändert Zitieren
Empfohlene Beiträge
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.