MySQL > OO > SQL Abfrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

mathew05
Beiträge: 6
Registriert: Do, 08.09.2005 11:47

MySQL > OO > SQL Abfrage

Beitrag von mathew05 »

hallo zusammen,

habe leider gleich zwei Sachen in Punkto MySQL und OO. Hoffe Ihr könnt mir da weiter helfen.

Ich habe unter Access ein kleines Tool gehabt in dem ich 2 Tabellen gehabt habe wo in der ersten Tabelle die Kundenstammdaten beinhaltet waren und in der anderen die Leistungen. In einem Formular waren die einzelnen Felder aus den Kundenstammdaten wie Firmanename, Ansprechpartner usw. und weiter unten eine Tablle mit mehreren Leistungen. Das heißt wenn cih einen bestimmten Kunden ausgewählt habe dann wurden mir dessen Leistungen angezeigt.

Da ich langsam aber sicher ganz von MS Office weg will habe ich mir gedacht ich portier das ganze auf MySQL und OO 1.1.4 so wie ich es auch mit anderen Anwednungen von mir gemacht habe. Dazu habe ich die ganzen Daten in eine TXT Datei exportiert und in MySQL importiert und dann das ganze mit dem MySQL Treiber und ODBC dem OO zugänglich gemacht. Die tabellen und Daten sind zu sehen.

Problem 1 :
Ich bekomme keine Schreibrechte auf die einzelnen Tabellen obwohl ich schon alle Rechte vergeben habe. Egal ob ich über den ODBC oder dem MySQL Treiber gehe.

Problem 2 :
Wie würde der SQL Befehl oder die Abfrage lauten wenn ich nur die Daten aus der Tabelle 1 und nur die Daten aus der Tabelle 2 die gleich sind angezeigt bekomme. Momentan werden mir im Formular in der Tabelle mit den Leistungen alle Daten angezeigt. Auch die von den anderen Kunden.

Wäre super wenn mir jemand einen Tipp hätte. Ich hoffe es ist einigermaßen verständlich :-)

Gruß
Mathew
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Re: MySQL > OO > SQL Abfrage

Beitrag von Onkel Hatti »

mathew05 hat geschrieben:hallo zusammen,

habe leider gleich zwei Sachen in Punkto MySQL und OO. Hoffe Ihr könnt mir da weiter helfen.

Ich habe unter Access ein kleines Tool gehabt in dem ich 2 Tabellen gehabt habe wo in der ersten Tabelle die Kundenstammdaten beinhaltet waren und in der anderen die Leistungen. In einem Formular waren die einzelnen Felder aus den Kundenstammdaten wie Firmanename, Ansprechpartner usw. und weiter unten eine Tablle mit mehreren Leistungen. Das heißt wenn cih einen bestimmten Kunden ausgewählt habe dann wurden mir dessen Leistungen angezeigt.

Da ich langsam aber sicher ganz von MS Office weg will habe ich mir gedacht ich portier das ganze auf MySQL und OO 1.1.4 so wie ich es auch mit anderen Anwednungen von mir gemacht habe. Dazu habe ich die ganzen Daten in eine TXT Datei exportiert und in MySQL importiert und dann das ganze mit dem MySQL Treiber und ODBC dem OO zugänglich gemacht. Die tabellen und Daten sind zu sehen.

Problem 1 :
Ich bekomme keine Schreibrechte auf die einzelnen Tabellen obwohl ich schon alle Rechte vergeben habe. Egal ob ich über den ODBC oder dem MySQL Treiber gehe.

Problem 2 :
Wie würde der SQL Befehl oder die Abfrage lauten wenn ich nur die Daten aus der Tabelle 1 und nur die Daten aus der Tabelle 2 die gleich sind angezeigt bekomme. Momentan werden mir im Formular in der Tabelle mit den Leistungen alle Daten angezeigt. Auch die von den anderen Kunden.

Wäre super wenn mir jemand einen Tipp hätte. Ich hoffe es ist einigermaßen verständlich :-)

Gruß
Mathew
Zu 1. kann ich nix sagen, da fehlen bestimmt noch n paar Berechtigungen... :lol:

zu 2.

in den Tabellen muss jeweils ein Eintrag gleich sein.

Z.B. in Tabelle 1 eine Kundennummer
in Tabelle 2 gibt es eine Spalte mit den Kundennummern und den jeweiligen Leistungen.

Dann sieht der Befehl aus:

SELECT leistungsspalte1, leistungsspalte2, leistungsspalte3 FROM tabelle2 WHERE tabelle2.kundennummer=Deine_Auswahl

Also, wenn du die Tabellen vor dir hast, dann kannst du eine Abfrage definieren, wobei für DeineAuswahl eine gültige Kundennummer eingegeben werden muss. Dann zeigt dir Oo.org die Leistungen zur gewählten Kundennummer an.

In Formularen wird es etwas komplizierter, weil es sich beim Ergebnis des Select-Befehls um ein Resultset handelt, mit dem man jetzt arbeiten kann und muss.

Gruß
Hatti
mathew05
Beiträge: 6
Registriert: Do, 08.09.2005 11:47

Beitrag von mathew05 »

hallo hatti,

erstmal danke für deine hilfe.

zu dem was du mir geschrieben hast müßte doch irgendwas in der richtung wie

SELECT leistungsspalte1, leistungsspalte2, leistungsspalte3 FROM tabelle2 WHERE tabelle2.kundennummer=tabelle1.kundennummer

also der soll mir doch die ergebinsse in den spalten zeigen bei den die kundennummer aus der tabelle1 mit der der kundennummer aus tabelle2 übereinstimmen.


hab ich da ein denkfehler. habs schon probiert aber der bringt mir einen synthaxfehler. :-(

gruß
matthias
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Beitrag von Onkel Hatti »

mathew05 hat geschrieben:hallo hatti,

erstmal danke für deine hilfe.

zu dem was du mir geschrieben hast müßte doch irgendwas in der richtung wie

SELECT leistungsspalte1, leistungsspalte2, leistungsspalte3 FROM tabelle2 WHERE tabelle2.kundennummer=tabelle1.kundennummer

also der soll mir doch die ergebinsse in den spalten zeigen bei den die kundennummer aus der tabelle1 mit der der kundennummer aus tabelle2 übereinstimmen.


hab ich da ein denkfehler. habs schon probiert aber der bringt mir einen synthaxfehler. :-(

gruß
matthias
Hi

Exakt, das soll er tun.
Wenn es einen Syntaxfehler gibt, dann probier mal, die entsprechenden Spaltennamen in Gänsefüße zu setzen. Bei MySQL könnte auch der einfach Gänsefuß zum Erfolg führen. Oder ein Gemisch aus beiden, mal in die MySQL Doku schauen.
Also:

SELECT "leistungsspalte1", "leistungsspalte2", "leistungsspalte3" FROM "tabelle2" WHERE "tabelle2.kundennummer"="tabelle1.kundennummer"

Gruß
Hatti
mathew05
Beiträge: 6
Registriert: Do, 08.09.2005 11:47

Beitrag von mathew05 »

hab ich mal so probiert. bekomm zwar jetzt keine synthaxfehler aber dafür bekomme ich die meldung das keine daten zurück gegeben wurden. ich denk mal das hängt aber damit zusammen das ich ja in diesem moment keinen wert für kundennummer angegeben habe und er deswegen keine daten ausspuckt. kann das sein?

ich habs auch im formular mit dem unterformular probiert aber das kommt dann auch kein ergebnis. :-(
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Beitrag von Onkel Hatti »

mathew05 hat geschrieben:hab ich mal so probiert. bekomm zwar jetzt keine synthaxfehler aber dafür bekomme ich die meldung das keine daten zurück gegeben wurden. ich denk mal das hängt aber damit zusammen das ich ja in diesem moment keinen wert für kundennummer angegeben habe und er deswegen keine daten ausspuckt. kann das sein?

ich habs auch im formular mit dem unterformular probiert aber das kommt dann auch kein ergebnis. :-(
Ja, sicher, wenn keine Kundennummer angegeben wird, können auch keine Daten zurückgegeben werden.

Gruß
Hatti
palmann
**
Beiträge: 40
Registriert: Fr, 29.07.2005 23:30

Re: MySQL > OO > SQL Abfrage

Beitrag von palmann »

Hi,
mathew05 hat geschrieben: Problem 1 :
Ich bekomme keine Schreibrechte auf die einzelnen Tabellen obwohl ich schon alle Rechte vergeben habe. Egal ob ich über den ODBC oder dem MySQL Treiber gehe.
OOo kann auf Tabellen ohne Indizes nicht schreiben. Wenn du dir deine Tabellen im Datequellendock (Tabelle markieren > rechte Maustaste > Tabelle bearbeiten) ansiehst muss eine deiner Tabellenspalten mit einem Schlüssel markiert sein.

Ich benutze übrigens auch noch phpMyAdmin um die MySQL Datenbank zu verwalten. Bis man alles am laufen hat, ist ein weiteres Interface mit dem man Zugriff auf die Tabellen hat echt 'ne feine Sache. Zumindest wenn man, wie ich, kein SQL-Gott ist.

HTH

Gruesse, Pablo
mathew05
Beiträge: 6
Registriert: Do, 08.09.2005 11:47

Beitrag von mathew05 »

hallo paulmann,
habe jetzt aber dabei das problem das ich keinen indizes für die zweite tabelle für die jeweilige spalte vergeben kann weil ich öfftes kommende gleiche werte habe. wie kann das funktionieren.

hatti hallo,
ich habe mir da smal unter access angeschuat und der spuckt mir für diese abfrage zumindest alle werte aus bi sich ihm eine kdn nummer gebe. irgendwie komm ich da nicht weiter. das kann doch nicht soooo schwer sein. ist bestimmt wieder so eine kleinigkeit :-(

gruß zusammen.
palmann
**
Beiträge: 40
Registriert: Fr, 29.07.2005 23:30

Beitrag von palmann »

mathew05 hat geschrieben:hallo paulmann,
habe jetzt aber dabei das problem das ich keinen indizes für die zweite tabelle für die jeweilige spalte vergeben kann weil ich öfftes kommende gleiche werte habe. wie kann das funktionieren.
Mach in deiner zweiten Tabelle einfach eine zusätzliche Spalte, in der Werte hochgezählt (inkrementiert) werden. Du brauchst sie für nichts benutzen. Zum Beispiel:

Tabelle 1
----------
*pid* | name | vorname


Tabelle 2
----------
*aid* | pid | strasse | plz | ort


In Tabelle 2 ist *aid* eine eindeutige Zahl, was für die Verknüpfung mit Tabelle 1 aber völlig wurscht ist. Für die Verknüpfung der Datensätze beider Tabellen verwendest du pid.

Gruesse, Pablo (bin selbst kein DB Experte, für den Fall das jetzt gerade ein solcher innerlich zusammenbricht :wink: )
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Beitrag von Onkel Hatti »

mathew05 hat geschrieben: hatti hallo,
ich habe mir da smal unter access angeschuat und der spuckt mir für diese abfrage zumindest alle werte aus bi sich ihm eine kdn nummer gebe. irgendwie komm ich da nicht weiter. das kann doch nicht soooo schwer sein. ist bestimmt wieder so eine kleinigkeit :-(

gruß zusammen.
Moinsen

Hmm, also, um das jetzt analysieren zu können, müsste ich wissen, wie die Tabellen aussehen und den dazugehörigen SQL-Befehl. Ich kann momentan das Problem nicht nachvollziehen.

Greetz
Hatti
mathew05
Beiträge: 6
Registriert: Do, 08.09.2005 11:47

Beitrag von mathew05 »

hallo hatti,
hallo paulmann,

danke für die Infos. Kanns leider momentan nciht probieren weil ich frischen Nachwuchs bekommen habe. Ich melde mich dann nochmal.

Danke Euch
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Beitrag von Onkel Hatti »

mathew05 hat geschrieben:hallo hatti,
hallo paulmann,

danke für die Infos. Kanns leider momentan nciht probieren weil ich frischen Nachwuchs bekommen habe. Ich melde mich dann nochmal.

Danke Euch
Herzlichen Glückwunsch!!! Auch an die Mama undden Nachwuchs!

Hatti
mathew05
Beiträge: 6
Registriert: Do, 08.09.2005 11:47

Beitrag von mathew05 »

------------------
Mach in deiner zweiten Tabelle einfach eine zusätzliche Spalte, in der Werte hochgezählt (inkrementiert) werden. Du brauchst sie für nichts benutzen. Zum Beispiel:

Tabelle 1
----------
*pid* | name | vorname


Tabelle 2
----------
*aid* | pid | strasse | plz | ort


In Tabelle 2 ist *aid* eine eindeutige Zahl, was für die Verknüpfung mit Tabelle 1 aber völlig wurscht ist. Für die Verknüpfung der Datensätze beider Tabellen verwendest du pid.
---------------------------------------------------------


hallo und danke für die glückwünsche.

dein tipp hat soweit geklappt. die abfrage habe ich jedoch unter OO erstellt und funktioniert auch problemlos. jetzt hab ich nur noch das problem das mit im formular und in der anchließenden tabelle alle werte angezeigt werden. normal sollte doch das so sein das wenn ich in den nächsten datensatz springe der mir in der tabelle unten die daten nur von diesem DS anzeigt.

ich bin so vorgegangen ...

habe mit dem formularassistent die abfrage ausgewählt und dann nur die felder aus der ersten tabelle integriert und das fertiggestellt. dann bin ich her und habe weiter unten ein tabellenkontollfeld eingefügt und der fragt automatisch welche felder ich einfügen möchte. da hab ich die von der zweiten ausgewählt. ich habe dann die tabelle im entwurfsmodus mit der rechten maustaste angeklickt und unter formular-eigenschaften die verknüpfung von > nach auf pid gesetzt.

was stimmt nicht?


gruß
matthias
Antworten