Veröffentlicht 3. September 200816 j 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 200816 j von Saban
3. September 200816 j 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
3. September 200816 j 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.
3. September 200816 j 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.
3. September 200816 j 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
3. September 200816 j 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?
3. September 200816 j 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.
3. September 200816 j 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 200816 j von flashpixx FullQuote geändert
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.