[de-users] Funktion LOCATE in Base
Hallo zusammen, ich möchte in Base (LO 4.2.8.2) zwei Felder aus zwei verschiedenen Tabellen vergleichen und herausfinden, ob der Inhalt des einen Feldes im anderen enthalten ist. Beide Felder haben den Typ Text. Dazu benutze ich in einer Abfrage die Funktion LOCATE(). Erste Frage: Gibt es eine sinnvollere Alternative? Ich habe die odb-Datei hier hochgeladen: https://www.wuala.com/ansgar.machalicky/Dokumente/LO-users/?key=jPG59LuMz6yP Bei einem Test zwischen zwei Tabellen (Mitglieder und Kinder) funktioniert das ganz wunderbar, das Ergebnis ist 1 für die Fälle, in denen der Text enthalten ist, und falls nicht, lautet es 0 (vgl. Abfrage LOCATE.Test02) Bei den eigentlichen Tabellen läuft's aber nicht: Es wird für alle Fälle nur die 0 als Ergebnis ausgegeben, obwohl es eindeutig einige Treffer gibt (LOCATE.Test04). Woran könnte es liegen (das ist die zweite Frage. )? Ich finde den Fehler nicht. Müssen die Tabellen dazu in einer Relation zueinander stehen? Ich hatte schon die Vermutung, dass die leeren Felder in der Spalte Probleme machen könnten und habe sie deshalb mit dem Text leer aufgefüllt, aber auch das bringt keine Besserung. Dankbar für jeden Tipp, Ansgar -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Funktion LOCATE in Base
Hallo Ansgar, Am 30.12.2014 um 12:00 schrieb Ansgar Machalický: Hallo zusammen, ich möchte in Base (LO 4.2.8.2) zwei Felder aus zwei verschiedenen Tabellen vergleichen und herausfinden, ob der Inhalt des einen Feldes im anderen enthalten ist. Beide Felder haben den Typ Text. Dazu benutze ich in einer Abfrage die Funktion LOCATE(). Erste Frage: Gibt es eine sinnvollere Alternative? Ich habe die odb-Datei hier hochgeladen: https://www.wuala.com/ansgar.machalicky/Dokumente/LO-users/?key=jPG59LuMz6yP Bei einem Test zwischen zwei Tabellen (Mitglieder und Kinder) funktioniert das ganz wunderbar, das Ergebnis ist 1 für die Fälle, in denen der Text enthalten ist, und falls nicht, lautet es 0 (vgl. Abfrage LOCATE.Test02) Bei den eigentlichen Tabellen läuft's aber nicht: Es wird für alle Fälle nur die 0 als Ergebnis ausgegeben, obwohl es eindeutig einige Treffer gibt (LOCATE.Test04). Woran könnte es liegen (das ist die zweite Frage. )? Ich finde den Fehler nicht. Müssen die Tabellen dazu in einer Relation zueinander stehen? Ich denke schon, wie soll Base sonst wissen,was mit wem verglichen werden soll? Das ist so völlig undefiniert. Du willst doch wissen, ob eines der Mitglieder oder eines der Kinder einen Umsatz hatte. Mit den vorhandenen Tabellen sieht es aber schlecht aus. Sinnvoll ist es, beim Erfassen des Umsatzes die ID des Mitgliedes mit einzutragen. Wenn Du mal aus der letzten Spalte den Teil LCASE( Umsaetze.Beguenstigter ) als neue Spalte daneben stellst, wird immer ronan reynolds angezeigt. Da sieht man, die drei Tabellen werden hier irgendwie miteinander gemischt. Ich hatte schon die Vermutung, dass die leeren Felder in der Spalte Probleme machen könnten und habe sie deshalb mit dem Text leer aufgefüllt, aber auch das bringt keine Besserung. Dankbar für jeden Tipp, Ansgar Viele Grüße Thomas --- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. http://www.avast.com -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Funktion LOCATE in Base
Hallo Ansgar, Bei einem Test zwischen zwei Tabellen (Mitglieder und Kinder) funktioniert das ganz wunderbar, das Ergebnis ist 1 für die Fälle, in denen der Text enthalten ist, und falls nicht, lautet es 0 (vgl. Abfrage LOCATE.Test02) Bei den eigentlichen Tabellen läuft's aber nicht: Es wird für alle Fälle nur die 0 als Ergebnis ausgegeben, obwohl es eindeutig einige Treffer gibt (LOCATE.Test04). Versuche einmal in LOCATE.Test04 eine Abfrage, die auch eine Verbindung der erforderlichen Tabellen ermöglicht, z.B. SELECT Mitglieder.Vater.Vorname, Mitglieder.Vater.Nachname, LOCATE( LCASE(Mitglieder.Vater.Nachname), LCASE( Umsaetze.Beguenstigter ) ) AS Nachname in Umsaetze?, Umsaetze.Beguenstigter FROM Mitglieder LEFT JOIN Umsaetze ON Mitglieder.Vater.Nachname = Umsaetze.Beguenstigter Bei Dir stehen die Tabellen nebeneinander. Da kann aus der Tabelle Umsaetze.Beguenstigter kein eindeutiger Wert kommen. Gruß Robert -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Funktion LOCATE in Base
Hallo Ansgar, laut der Dokumantation der HSQLDB (http://hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_string_binary_functions) gibt LOCATE die Position bei der String 1 in String2 beginnt, es wird also kein Boolean zurückgegeben, ob er enthalten ist. Eine Alternative wäre vielleicht IN: SELECT name1 FROM t1 IN (SELECT name2 FROM t2 WHERE name = 'Name'); Wobei ich hier nur einen Namen beachtet habe. Viele Grüße Ralf Am 30.12.2014 um 12:29 schrieb Thomas: Hallo Ansgar, Am 30.12.2014 um 12:00 schrieb Ansgar Machalický: Hallo zusammen, ich möchte in Base (LO 4.2.8.2) zwei Felder aus zwei verschiedenen Tabellen vergleichen und herausfinden, ob der Inhalt des einen Feldes im anderen enthalten ist. Beide Felder haben den Typ Text. Dazu benutze ich in einer Abfrage die Funktion LOCATE(). Erste Frage: Gibt es eine sinnvollere Alternative? Ich habe die odb-Datei hier hochgeladen: https://www.wuala.com/ansgar.machalicky/Dokumente/LO-users/?key=jPG59LuMz6yP Bei einem Test zwischen zwei Tabellen (Mitglieder und Kinder) funktioniert das ganz wunderbar, das Ergebnis ist 1 für die Fälle, in denen der Text enthalten ist, und falls nicht, lautet es 0 (vgl. Abfrage LOCATE.Test02) Bei den eigentlichen Tabellen läuft's aber nicht: Es wird für alle Fälle nur die 0 als Ergebnis ausgegeben, obwohl es eindeutig einige Treffer gibt (LOCATE.Test04). Woran könnte es liegen (das ist die zweite Frage. )? Ich finde den Fehler nicht. Müssen die Tabellen dazu in einer Relation zueinander stehen? Ich denke schon, wie soll Base sonst wissen,was mit wem verglichen werden soll? Das ist so völlig undefiniert. Du willst doch wissen, ob eines der Mitglieder oder eines der Kinder einen Umsatz hatte. Mit den vorhandenen Tabellen sieht es aber schlecht aus. Sinnvoll ist es, beim Erfassen des Umsatzes die ID des Mitgliedes mit einzutragen. Wenn Du mal aus der letzten Spalte den Teil LCASE( Umsaetze.Beguenstigter ) als neue Spalte daneben stellst, wird immer ronan reynolds angezeigt. Da sieht man, die drei Tabellen werden hier irgendwie miteinander gemischt. Ich hatte schon die Vermutung, dass die leeren Felder in der Spalte Probleme machen könnten und habe sie deshalb mit dem Text leer aufgefüllt, aber auch das bringt keine Besserung. Dankbar für jeden Tipp, Ansgar Viele Grüße Thomas --- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. http://www.avast.com -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert