Einstieg in Base / MySQL / JDBC

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Hallo,

ich möchte mich in Base einarbeiten. Mein Projekt sollte später etwas komplexer sein (siehe hier). Um eine Ahnung zu bekommen wie aufwendig das für mich ist, muss ich einfach mal anfangen und mich einlesen.

Doch wo gibt es Informationen oder Beispiele? Ich suche seit Tagen und finde nichts gescheites, was mir bei der Abfrage auch Berechnungen erlaubt.

Wonach muss ich überhaupt suchen? Das meiste gibt es für Base und HQSQL oder sowas. Das kann ich ja dann wiederum nicht gebrauchen oder?
Ich habe erfolgreich eine Datenbankverbindung aufgebaut, Daten befüllt und kann diese auch abrufen. Aber ich möchte beim abrufen Daten Berechnen. Und beim eintragen möchte ich auch Daten berechnen.

Wenn jemand Tutorials, Infoseiten oder Videos kennt, bitte teilt mir mit wo ;)
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Einstieg in Base / MySQL / JDBC

Beitrag von juetho »

Freaky hat geschrieben:Wonach muss ich überhaupt suchen? Das meiste gibt es für Base und HQSQL oder sowas. Das kann ich ja dann wiederum nicht gebrauchen oder?
Wenn du es innerhalb von Base mit Makros lösen willst, sind die Handbücher für Base und Makros (OO-/Starbasic) geeignet. Siehe die OO-Handbücher. Soweit du es innerhalb von MySQL (z.B. Workbench) oder mit Abfragen lösen willst, sind die MySQL-Handbücher und theoretisch alle SQL-Anleitungen geeignet. Allerdings musst du bedenken, dass jedes Datenbanksystem (DBMS) seinen eigenen SQL-Dialekt nutzt, der mit dem SQL-Standard nur bedingt zu tun hat. Allgemein empfehle ich deshalb eine Einführung in SQL. SQL-Befehle, die im Base-Handbuch stehen, kannst du normalerweise unverändert benutzen, weil sie einfach strukturiert sind. Aber es kann immer passieren, dass sie für MySQL etwas umgeschrieben werden müssen.
Ich habe erfolgreich eine Datenbankverbindung aufgebaut, Daten befüllt und kann diese auch abrufen. Aber ich möchte beim abrufen Daten Berechnen. Und beim eintragen möchte ich auch Daten berechnen.
Berechnen bei Abfragen geht mit "berechneten Spalten". Das Berechnen beim Speichern geht in erster Linie mit Triggern.

Beides ist stattdessen auch auf folgendem Weg möglich: Benutze einfache SQL-Befehle (SELECT, INSERT, UPDATE) ohne Berechnung, also direkt auf die Tabellenspalten bezogen. Die erforderlichen Rechnungen werden im Anwenderprogramm (Benutzeroberfläche, Base) mit Makros erledigt.

Ein kleiner praktischer Tipp: Sowohl bei MySQL als auch bei Base stehen in den SQL-Befehlen dauernd Gänsefüßchen bei den Namen von Tabellen und Spalten. Wenn du einfache Bezeichnungen verwendest (keine Umlaute, keine Sonderzeichen, keine SQL-Schlüsselwörter), kannst du auf die Gänsefüßchen verzichten; dann sind die Befehle viel leichter lesbar.

Ich hoffe, diese Hinweise helfen dir weiter. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Re: Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Hallo,

vielen Dank für Eure Antworten! Jetzt habe ich auch die passenden Beispieldateien gefunden. Ich werde erstmal lesen, testen, lesen, testen.

Immer wieder toll wie freundlich einem hier geholfen wird!!! :D
Ich melde mich wieder, keine Sorge ;)

Weitere Einsteigerfreundliche Anleitung sind natürlich immer wilkommen!

EDIT: Na da habe ich mir ja was vorgenommen =)
Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Re: Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Hallo,

ich schaffe es zum verrecken nicht in einer Abfrage zwei Werte zu addieren.

Ich habe in einer Tabelle Einkaufspreis und Marge und möchte nun den Verkaufspreis errechnen indem ich Einkaufspreis + Marge rechne.

Jetzt fängt es schon an. Muss ich die Spalte Verkaufspreis auch in die Tabelle einfügen oder wird diese automatisch in dem SQL Befehl erzeugt? Dann natürlich nur einmalig in der abfrage.

Mein aktueller Befehl:

Code: Alles auswählen

SELECT `Einkaufspreis`, `Marge`, `Marge` + `Einkaufspreis` FROM `d0xxxxxx`.`Beispiel Preisrechner` AS `Beispiel Preisrechner` Spalte3=`Marge`+`Einkaufspreis`
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Einstieg in Base / MySQL / JDBC

Beitrag von juetho »

Freaky hat geschrieben:Mein aktueller Befehl:

Code: Alles auswählen

SELECT `Einkaufspreis`, `Marge`, `Marge` + `Einkaufspreis` FROM `d0xxxxxx`.`Beispiel Preisrechner` AS `Beispiel Preisrechner` Spalte3=`Marge`+`Einkaufspreis`
Viel einfacher:

Code: Alles auswählen

SELECT Einkaufspreis, Marge, Marge + Einkaufspreis AS Verkaufspreis 
  FROM d0xxxxxx.`Beispiel Preisrechner` 
Wenn du den Namen der Tabelle ohne Sonderzeichen gewählt hättest, wären auch diese Hochkommata überflüssig.

Vor allem solltest du dir die Grundstruktur eines SELECT anschauen: SELECT - Liste aller Spalten - FROM - Liste aller Tabellen - WHERE (Einschränkungen) - weitere Zusätze. Ein Gleichheitszeichen kommt selten vor (üblicherweise nur bei Bedingungen). Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Re: Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Danke Jürgen!

Wo ich das jetzt so sehe, ist es in der Tat leichter und für mich tatsächlich auch verständlich. Mehr Erfahrung kommt durch mehr rumbasteln!

Wenn ich jetzt den errechneten Wert auch gerne in die Datenbank schreiben würde, wäre das schon wieder ein wesentlich größerer Aufwand ne?
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Einstieg in Base / MySQL / JDBC

Beitrag von lorbass »

Freaky hat geschrieben:Wenn ich jetzt den errechneten Wert auch gerne in die Datenbank schreiben würde, wäre das schon wieder ein wesentlich größerer Aufwand ne?
Du müsstest dich mit der UPDATE-Anweisung vertraut machen. Aber meinst du wirklich, dass ein Forum geeignet ist, die SQL-Grundlagen zu lernen?

Gruss
lorbass
Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Re: Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Guten Morgen Lorbass.

Wahrscheinlich nicht. Aber ich schätze dass noch keine Meister vom Himmel gefallen sind. Wie habt Ihr den Einstieg gefunden?
Ich habe von der ganzen Struktur und der damit verbundenen Arbeit noch keinen Überblick.

Gruß
Christian
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Einstieg in Base / MySQL / JDBC

Beitrag von juetho »

lorbass hat geschrieben:
Freaky hat geschrieben:Wenn ich jetzt den errechneten Wert auch gerne in die Datenbank schreiben würde, wäre das schon wieder ein wesentlich größerer Aufwand ne?
Du müsstest dich mit der UPDATE-Anweisung vertraut machen.
Und vorher mit CREATE TABLE. Aber Daten, die aus anderen Werten errechnet werden können, müssen nicht unbedingt separat gespeichert werden; auch das fällt darunter, dass Redundanz vermieden werden soll (siehe das Kapitel zur Normalisierung in "meiner" SQL-Einführung).
Aber meinst du wirklich, dass ein Forum geeignet ist, die SQL-Grundlagen zu lernen?
Ich schließe mich dem an.
Freaky hat geschrieben:Wie habt Ihr den Einstieg gefunden?
Beim Programmieren (Anfang der 1990er-Jahre) ging es darum, wie auf Daten zugegriffen werden kann. Da wurde der Umgang mit SQL automatisch notwendig. Der Anfang waren bei mir einzelne Kapitel in Büchern über Delphi.
Ich habe von der ganzen Struktur und der damit verbundenen Arbeit noch keinen Überblick.
Genau dafür gibt es Lehrbücher. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Re: Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Vielen Dank Euch beiden!
Das Buch "Einführung in SQL" hört sich wirklich interessant an, das wird es werden. Jürgen, der Autor bist nicht DU oder?

Eine prinzipielle Frage habe ich aber dennoch.

Angenommen ich habe eine Datenbank mit Einkaufspreis, Marge und Verkaufspreis.
Der Verkaufspreis soll errechnet werden, so wie oben schon. Den Einkaufspreis trage ich ein, die Marge ist ein fester Wert der in einer Tabelle steht. Nun habe ich den Verkaufspreis von 1000 Artikeln in der Datenbank. Jetzt ändere ich die Marge jedoch, das würde bedeuten alle 1000 Datensätze müssen bearbeitet werden.

Wäre das der richtige Ablauf oder würde der Verkaufspreis bei JEDER Abfrage einfach erneut errechnet werden? Also den Verkaufspreis gar nicht in die Datenbank schreiben. Wenn ja, auch wenn ich mir alle 1000 Artikel als Liste anzeigen lassen möchte? Und was wenn ich eine Artikelnummer mit zugehörigem Verkaufspreis exportieren möchte? Würde das darüber dann auch funktionieren?


Jetzt genaue Formeln möchte ich gar nicht haben, sondern nur einen groben stupser in die richtige Richtung. Ob es Sinn macht bei soetwas die UPDATE-Anweisung zu verwenden.

Gruß
Christian
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Einstieg in Base / MySQL / JDBC

Beitrag von juetho »

Freaky hat geschrieben:Das Buch "Einführung in SQL" hört sich wirklich interessant an, das wird es werden. Jürgen, der Autor bist nicht DU oder?
Weitgehend. Es ist ein Wiki-Buch, also in gemeinsamer Arbeit entstanden. Aber der größte Teil stammt von mir.
Wäre das der richtige Ablauf oder würde der Verkaufspreis bei JEDER Abfrage einfach erneut errechnet werden? Also den Verkaufspreis gar nicht in die Datenbank schreiben.
Letzteres ist besser, wie ich in meinem vorigen Beitrag schon schrieb. Was errechnet werden kann, muss nicht zusätzlich gespeichert werden; aber es gibt auch abweichende Situationen. Beispielsweise ist es sinnvoll, bei einer konkreten Rechnung Zwischensummen und MWSt zusätzlich zu speichern; denn es handelt sich um ein Dokument der Buchhaltung und darf nicht dadurch geändert werden, dass für künftige Angebote die Marge geändert wird.
Wenn ja, auch wenn ich mir alle 1000 Artikel als Liste anzeigen lassen möchte? Und was wenn ich eine Artikelnummer mit zugehörigem Verkaufspreis exportieren möchte? Würde das darüber dann auch funktionieren?
Na, genau so wie im obigen SELECT-Befehl.

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Freaky
***
Beiträge: 50
Registriert: Mo, 24.05.2010 08:30

Re: Einstieg in Base / MySQL / JDBC

Beitrag von Freaky »

Hallo,

einige Zeit ist vergangen, ich habe viel gelesen und gebastelt. Jedoch noch lange nicht genug.
Ich habe es mittlerweile geschafft mehrere Tabellen zu verknüpfen und diese per Formular zu befüllen.

Jetzt habe ich einen kleinen Meilenstein vor mir. Die Abfragen!
Wozu sind Abfragen gut?

Bisher dachte ich, in Abfragen werden die angelegten Inhalte so ausgegeben wie man sie braucht und zu errechnende Werte werden dort errechnet. Gleichzeitig besteht die Möglichkeit die festen DB-Inhalte zu ändern. Ich bastel mir also eine Abfrage, die optisch so aussieht wie ein Formular, mit der Option feste Werte zu ändern, die sich auf die errechneten Ergebnisse beziehen.

ABER, wenn ich mir die Beispieldatenbanken mal so ansehe, sind Abfragen bis jetzt immer als einfache Tabelle dargestellt gewesen, ohne die Möglichkeit etwas zu ändern. Da durchblicke ich derzeit noch nicht die Logik!
Oder werden Abfragen nur angelegt um diese später übersichtlich in ein Formular einzubinden?


Ich finde dazu auch leider nichts im Internet oder im Handbuch.

Ein kleines Beispiel:

Ich trage meine T-shirts über ein Formular in eine Datenbank. Jetzt möchte ich im Nachhinein dieses T-shirt aufrufen und z.B. anhaken dass ich das schon an hatte. So würde ich das nach meinen jetzigen aber wohl falschen erkenntnissen per Abfrage machen. Ich wähle z.B. das T-shirt aus und habe dann die Option den Haken "getragen" zu setzen.


Ich hoffe Ihr versteht was ich meine. Wenn nicht, gebt Laut!
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Einstieg in Base / MySQL / JDBC

Beitrag von RobertG »

Hallo Freaky,
Freaky hat geschrieben: Ein kleines Beispiel:
Ich trage meine T-shirts über ein Formular in eine Datenbank. Jetzt möchte ich im Nachhinein dieses T-shirt aufrufen und z.B. anhaken dass ich das schon an hatte. So würde ich das nach meinen jetzigen aber wohl falschen erkenntnissen per Abfrage machen. Ich wähle z.B. das T-shirt aus und habe dann die Option den Haken "getragen" zu setzen.
Schau einmal im Handbuch das Kapitel "Eingabemöglichkeit in Abfragen" an. Vielleicht ist es das, was Du suchst: Die Abfrage muss den Primärschlüssel der jeweiligen Tabelle enthalten - ansonsten kannst Du keine Werte ändern.
Entscheidender scheint mir zu sein, wie Du das T-Shirt aussuchen willst ...
In der Beispieldatenbank zum Handbuch sind übrigens mehrere Formulare, die auf Abfragen basieren. Die gesamte Datenfilterung funktioniert so, dass nur die entsprechend vorgefilterten Daten über eine Abfrage ausgesucht werden.

Gruß

Robert
Antworten