[gelöst] Probleme bei Abfrage mit leeren Feldern

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

[gelöst] Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

Hallo!

Ich arbeite erst seit neuestem mit Datenbanken. Nun tauchen erste Probleme auf, die ich mit Suchen (kann an meiner offenbar angeborenen Schwäche des Ausdenkens passender Suchbegriffe liegen...) nicht lösen konnte.

Mein erstes Problem betrifft eine Abfrage:

Ausgangslage:

Tabelle1: Enthält die Kundenadressen mit dem Feld "Titel". Dieses Titel-Feld wird per Verknüpfung aus Tabelle2 zugeordnet (über die ID aus Tabelle2)

Tabelle2: Enthält alle möglichen Titel (Dr. usw.) mit einer ID

Abfrageproblem:
Selektiere ich über eine Abfrage bestimmte Kunden und will mir deren komplette Adressdaten (inkl. Titel) auswerfen lassen (z.B. für einen Serienbrief), werden alle Kunden OHNE einen Titel (ist logischerweise kein Pflichteingabefeld in Tabelle1) konsequent ignoriert. D.h., alle Kunden, die keinen Wert im Feld "Titel" in Tabelle1 haben, werden nicht berücksichtigt.

Ein Bild sagt mehr als tausend Worte. Meine aktuelle Abfrage (gesucht werden alle Kunden, die einer bestimmten Kategorie zugeordnet sind):

Bild

Wo und wie muss ich jetzt schrauben, dass bei der Abfrage auch Datensätze aus Tabelle1 ("Kunden") komplett ausgeworfen werden, deren Feld "Titel" keinen Wert enthält?

Bin für alle Tipps/Links dankbar!

Bei der Gelegenheit:
Wie integriere ich hier optimal screenshots in brauchbarer Qualität in meine Postings?

hf!
Zuletzt geändert von Neujuenger2010 am Do, 28.10.2010 19:27, insgesamt 1-mal geändert.
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Barlee »

Hallo Neujuenger2010,

Willkommen im Forum.
Du beschreibst eine typische Aufgabenstellung, die sich mittels LEFT JOIN lösen lässt. Damit werden alle (selektierten) Ergebnisse aus Tab1 zurückgegeben. Existiert keine Entsprechung in Tab2, dann führt das zur Ausgabe von DB NULL.

Schau Dir am besten ein paar Beispiele zu LEFT JOIN hier im Forum an.
Falls konkrete Fragen sind, melde Dich.

Gruß Barlee
Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

Barlee hat geschrieben:[....]
Du beschreibst eine typische Aufgabenstellung, die sich mittels LEFT JOIN lösen lässt. Damit werden alle (selektierten) Ergebnisse aus Tab1 zurückgegeben. Existiert keine Entsprechung in Tab2, dann führt das zur Ausgabe von DB NULL.

Schau Dir am besten ein paar Beispiele zu LEFT JOIN hier im Forum an.
Falls konkrete Fragen sind, melde Dich.

Gruß Barlee
Ups. Die Suchergebnisse hier aus dem Forum haben mich nicht weiter gebracht (hint: Ich bin blutiger DB-Anfänger). Also Google bemüht.
Ergebnis: Das lässt sich wohl nicht mehr simpel mit nem Abfrageentwurf wie im screenshot (s.o.) realisieren.
Offensichtlich muss ich da die Abfrage direkt in der SQL-Ansicht bearbeiten?

Meine aktuelle Abfrage sieht so aus:

Code: Alles auswählen

SELECT "Kunden"."Name", "Kunden"."Vorname", "Kunden"."Strasse", "Kunden"."Hausnummer", "Kunden"."Adresszusatz", "Kunden"."PLZ", "Anrede"."Anrede", "Titel"."Titel", "Briefanrede"."Briefanrede", "Ort"."Ort", "Kundenkategorien"."Kategorie" FROM "Kunden", "Anrede", "Titel", "Briefanrede", "Ort", "Kundenkategorien" WHERE "Kunden"."Anrede" = "Anrede"."Anrede-ID" AND "Kunden"."Titel" = "Titel"."Titel-ID" AND "Kunden"."Briefanrede" = "Briefanrede"."Briefanr-ID" AND "Kunden"."Ort" = "Ort"."Ort-ID" AND "Kunden"."Kategorie" = "Kundenkategorien"."Kategorie-ID" AND "Kunden"."Kategorie" = 1
Leider habe ich auf die Schnelle keine brauchbare deutschsprachige Seite (mein Englisch ist grottig bis nicht vorhanden) für einen SQL-Schnelleinstieg gefunden. Aus diversen Fragementen reime ich mir zusammen, dass irgendwo in den obigen code ein

Code: Alles auswählen

LEFT JOIN "Titel" ON "Kunden"."Titel" = "Titel"."Titel-ID"
eingefügt werden muss.

Dies müsste ja bewirken, dass die Abfrage-Spalte "Titel" entweder mit einem zugeordneten Titel oder - sofern kein Titel in Tabelle "Kunden" zugeordnet - mit DB NULL gefüllt und der entsprechende Kundendatensatz ausgegeben wird. Soweit korrekt?

Aber wo? Alle bisherigen Versuche scheiterten an Syntax-Fehlern.

Einzig

Code: Alles auswählen

SELECT "Kunden"."Name", "Kunden"."Vorname", "Kunden"."Strasse", "Kunden"."Hausnummer", "Kunden"."Adresszusatz", "Kunden"."PLZ", "Anrede"."Anrede", "Titel"."Titel", "Briefanrede"."Briefanrede", "Ort"."Ort", "Kundenkategorien"."Kategorie" FROM "Kunden", "Anrede", "Titel", "Briefanrede", "Ort", "Kundenkategorien" LEFT JOIN "Titel" ON "Kunden"."Titel" = "Titel"."Titel-ID" WHERE "Kunden"."Anrede" = "Anrede"."Anrede-ID" AND "Kunden"."Briefanrede" = "Briefanrede"."Briefanr-ID" AND "Kunden"."Ort" = "Ort"."Ort-ID" AND "Kunden"."Kategorie" = "Kundenkategorien"."Kategorie-ID" AND "Kunden"."Kategorie" = 1
funktioniert. Wirft aber leider ein ungewolltes Ergebnis aus: Es werden alle möglichen Kombinationen (Jeder Kunde mit jedem möglichen Titel) ausgeworfen.

Jetzt stellen sich mir folgende Fragen:

1. Muss/sollte ich mich wirklich in SQL einarbeiten?
2. Wenn ja- wie/wo (links, Buchempfehlungen?)?

Sollte sich jemand erbarmen und mir erstmal diese Abfrage korrekt in SQL "schreiben", bin ich latürnich auch nicht abgeneigt... :wink:

Danke im voraus für weitere Hilfe
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von herz4 »

Vielleicht gelingt folgendes:
Erstelle den SELECT-Befehl wie ehedem ohne Titel-Zuordnung! Benutze diesen als Unterabfrage, etwa wie:
SELECT * FROM (SELECT ... FROM ...) AS "A" LEFT JOIN "Titel" ON "A"."Titel" = "Titel"."Titel-ID",
wobei in Klammern Deine Unterabfrage steht. Achtung: "Kunden"."Titel" muss in Deiner Unterabfrage mit ausgegeben werden und kann dann bei Bedarf nur dadurch rausgenommen werden, dass anstatt * die Felder angegeben werden, die ausgegeben werden sollen.
Geht das?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Benutzeravatar
boser
*****
Beiträge: 264
Registriert: Mi, 02.09.2009 08:28
Kontaktdaten:

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von boser »

Hallo Zusammen,
ich hätte da die Frage , ob ein LEFT JOIN , bzw, RIGHT JOIN geht, wenn die Beziehung nicht entsprechend mit 1:n eingestellt ist.
mfg
boser
mfg
boser

linux suse 11.4 / 12.2 ; LibreOffice 3.4.2
Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

Neujuenger2010 hat geschrieben: [....]
Einzig

Code: Alles auswählen

SELECT "Kunden"."Name", "Kunden"."Vorname", "Kunden"."Strasse", "Kunden"."Hausnummer", "Kunden"."Adresszusatz", "Kunden"."PLZ", "Anrede"."Anrede", "Titel"."Titel", "Briefanrede"."Briefanrede", "Ort"."Ort", "Kundenkategorien"."Kategorie" FROM "Kunden", "Anrede", "Titel", "Briefanrede", "Ort", "Kundenkategorien" LEFT JOIN "Titel" ON "Kunden"."Titel" = "Titel"."Titel-ID" WHERE "Kunden"."Anrede" = "Anrede"."Anrede-ID" AND "Kunden"."Briefanrede" = "Briefanrede"."Briefanr-ID" AND "Kunden"."Ort" = "Ort"."Ort-ID" AND "Kunden"."Kategorie" = "Kundenkategorien"."Kategorie-ID" AND "Kunden"."Kategorie" = 1
funktioniert. Wirft aber leider ein ungewolltes Ergebnis aus: Es werden alle möglichen Kombinationen (Jeder Kunde mit jedem möglichen Titel) ausgeworfen.

[....]
Latürnich sollte man dann wohl vor "LEFT JOIN" die Tabelle "Titel" aus dem FROM auch entfernen....

Nach ein wenig einlesen in http://de.wikibooks.org/wiki/Einf%C3%BC ... n_abfragen habe ich jetzt folgende Abfrage:

Code: Alles auswählen

SELECT "Kunden"."Name" "Kundenname", "Kunden"."Vorname", "Kunden"."Strasse", "Kunden"."Hausnummer", "Kunden"."PLZ", "Kunden"."Adresszusatz", "Titel"."Titel", "Ort"."Ort", "Anrede"."Anrede", "Briefanrede"."Briefanrede"  FROM "Ort", "Anrede", "Briefanrede", "Kunden" LEFT JOIN "Titel" ON "Kunden"."Titel" = "Titel"."Titel-ID" WHERE "Kunden"."Kategorie" = 1 AND "Kunden"."Ort" = "Ort"."Ort-ID" AND "Kunden"."Anrede" = "Anrede"."Anrede-ID" AND "Kunden"."Briefanrede" = "Briefanrede"."Briefanr-ID"
Nach einem Test über einen Bestand von 10 Kundendatensätzen liefert die Abfrage das gewünschte Ergebnis.

Hoffentlich ist das nicht nur ein Zufall...

Wäre nett, wenn jemand bestätigen könnte, dass die Abfrage syntaktisch korrekt ist und meinen Abfragewünschen auch entspricht.

Danke!
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

herz4 hat geschrieben:Vielleicht gelingt folgendes:
Erstelle den SELECT-Befehl wie ehedem ohne Titel-Zuordnung! Benutze diesen als Unterabfrage, etwa wie:
SELECT * FROM (SELECT ... FROM ...) AS "A" LEFT JOIN "Titel" ON "A"."Titel" = "Titel"."Titel-ID",
wobei in Klammern Deine Unterabfrage steht. Achtung: "Kunden"."Titel" muss in Deiner Unterabfrage mit ausgegeben werden und kann dann bei Bedarf nur dadurch rausgenommen werden, dass anstatt * die Felder angegeben werden, die ausgegeben werden sollen.
Geht das?
Danke auch für Deinen Beitrag! Leider habe ich als Anfänger da noch Verständnisprobleme:

1.
Was meinst Du im ersten Satz mit "Titel-Zuordnung"? Worauf bezieht sich das? Kannst Du die entsprechende Stelle aus meiner Abfrage zitieren?

2.
Was genau soll ich in der Unterabfrage abfragen?

Vielen Dank im voraus für Deine Geduld mit einem Newbie!
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von herz4 »

@Neujuenger2010

Du scheinst mir, Dein Problem eleganter gelöst zu haben als durch meinen Vorschlag, der Dir schwer fiel zu verstehen.

In Wirklichkeit unterscheiden sie sich nach meiner Einschätzung nur syntaktisch - zu Deinen Gunsten!

Weiter so, immer besser sein wollen als die Alten ...

René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

herz4 hat geschrieben:@Neujuenger2010

Du scheinst mir, Dein Problem eleganter gelöst zu haben als durch meinen Vorschlag, der Dir schwer fiel zu verstehen.

In Wirklichkeit unterscheiden sie sich nach meiner Einschätzung nur syntaktisch - zu Deinen Gunsten!

Weiter so, immer besser sein wollen als die Alten ...

René
*rotwerd*

Danke!

Allerdings interessiert mich jetzt doch, wie und wozu man Unterabfragen einsetzen kann. Mein hier geschiildertes (und nun gelöstes) Problem, war ja quasi bei einer recht simplen Abfrage.
Meine Datenbank wird zukünftig noch etliche weitere Tabellen mit diversen Kundeninfos enthalten. Dann brauche ich auch komplexere Abfragen.
Es wäre daher sehr nett, wenn Du mir schon mal einen Hinweis geben könntest, in welchen Fällen Unterabfragen sinnvoll sein können und wie sie "funktionieren". Dann kann ich später rechtzeitig in die richtige Richtung denken... :wink:


Eine Frage habe ich zusätzlich noch zu der Syntax:

Ich habe meine Abfrage mal etwas "entrümpelt". Sie sieht jetzt so aus:

Code: Alles auswählen

select
	"Kunden"."Name",
	"Kunden"."Vorname",
	"Kunden"."Adresszusatz",
	"Kunden"."Strasse",
	"Kunden"."Hausnummer",
	"Kunden"."PLZ",
	"Ort"."Ort",
	"Anrede"."Anrede",
	"Titel"."Titel",
	"Briefanrede"."Briefanrede"	
from
	"Kunden"
	join "Anrede" on "Kunden"."Anrede" = "Anrede"."Anrede-ID"
	join "Ort" on "Kunden"."Ort" = "Ort"."Ort-ID"
	join "Briefanrede" on "Kunden"."Briefanrede" = "Briefanrede"."Briefanr-ID"
	left join "Titel" on "Kunden"."Titel" = "Titel"."Titel-ID"
	
where
	"Kunden"."Kategorie" = 1

Das finde ich persönlich etwas übersichtlicher, da jetzt "mein" wichtiges Filterkriterium "Kategorie" quasi alleine im "where"-Ausdruck steht. Ich seh also besser, was ich mit der Abfrage eigentlich suche.
Zudem kann ich problemlos (es funktionierte im test zumindest problemlos...) in die Ausgabe weitere Tabellen-Verknüpfungen einbinden, in denen es das gleiche (Leer-)Problem wie bei "Titel" gibt. Z.B. Geschlecht (nur als Test...):

Code: Alles auswählen

select
	"Kunden"."Name",
	"Kunden"."Vorname",
	"Kunden"."Adresszusatz",
	"Kunden"."Strasse",
	"Kunden"."Hausnummer",
	"Kunden"."PLZ",
	"Ort"."Ort",
	"Anrede"."Anrede",
	"Titel"."Titel",
	"GeschlRechtsform"."GeschlRechtsform"
from
	"Kunden"
	join "Anrede" on "Kunden"."Anrede" = "Anrede"."Anrede-ID"
	join "Ort" on "Kunden"."Ort" = "Ort"."Ort-ID"
	left join "GeschlRechtsform" on "Kunden"."Geschlecht/Rechtsform" = "GeschlRechtsform"."Geschl-ID"
	left join "Titel" on "Kunden"."Titel" = "Titel"."Titel-ID"
	
where
	"Kunden"."Kategorie" = 1


Ist das von der Logik und Syntax her korrekt?

Bitte bremst mich und schubst mich in die richtige Richtung, falls ich hier Unsinn lerne/probiere!

Danke!
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von herz4 »

Hallo Neujünger2010,

ich danke Dir für Deinen Humor mit dem Du meinen Anflug von "Übelheblichkeit" - von wegen die Alten - ertragen hast!

Weiterhin hat mir Dein Verweis auf Wikibooks sehr gefallen, mit dem ich mich revanchieren kann und auf eine Deiner Fragen antworten will: http://de.wikibooks.org/wiki/Einf%C3%BC ... erabfragen!

Deine "Entrümpelung" hat mir geholfen besser zu verstehen. Wahrscheinlich aus Gründen der Redundanz verzichtest Du in "Stammdatensätzen" sogar auf die Speicherung des Ortsnamens zugunsten eines Zeigers. Das ist sicherlich hilfreich um Daten bei Änderung leicht ändern zu können: dies muss man dann nur an einer Stelle. Ist etwa eine Anrede mittlerweile veraltet, modernisiert man sie. Bei Ortsnamen dürfte dies nicht das Angestrebte sein, was aber dann?

Ich sehe eine Schwierigkeit bei der Eingabe neuer Daten. So lange nur bekannte Ortsnamen einzugeben sind, easy. Was aber bei "neuen", besser unbekannten. In diesem Fall stößt doch ein etwaiges Kombifeld an seine Grenzen, oder? Ich meine, dann müsste der Datenpool Ortsnamen erst aktualisiert werden. Oder gibt es leichtere Methoden?

Ich würde gerne mehr lernen ...

René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

herz4 hat geschrieben: [....]
Weiterhin hat mir Dein Verweis auf Wikibooks sehr gefallen, mit dem ich mich revanchieren kann und auf eine Deiner Fragen antworten will: http://de.wikibooks.org/wiki/Einf%C3%BC ... erabfragen!
Bingo! Danke! ...*grummel*hättichauchselbstdraufkommenkönnen*grummel*

herz4 hat geschrieben: Deine "Entrümpelung" hat mir geholfen besser zu verstehen. Wahrscheinlich aus Gründen der Redundanz verzichtest Du in "Stammdatensätzen" sogar auf die Speicherung des Ortsnamens zugunsten eines Zeigers. Das ist sicherlich hilfreich um Daten bei Änderung leicht ändern zu können: dies muss man dann nur an einer Stelle. Ist etwa eine Anrede mittlerweile veraltet, modernisiert man sie. Bei Ortsnamen dürfte dies nicht das Angestrebte sein, was aber dann?
Bei Ortsnamen dient es einfach zur Vermeidung von Schreibfehlern.
Angenommen, ich möchte alle Kunden einer bestimmten Stadt selektieren. Dann rutschen mir bei der Abfrage alle Münchener Kunden durch, bei denen unter Ort z.B. "Muenchen" oder "Münhcen" o.ä. eingetragen wurde.
Gleichzeitig habe ich so bei Serienbriefen im Adressfeld immer die korrekte Schreibweise (sofern einmal korrekt in der Datenbak erfasst) stehen. Sonst wirds manchmal peinlich...
Evtl. gibt es ja auch mal eine "Eingemeindung", wo ein Ortsname plötzlich zu einem Ortsteil wird. Auch da ist es dann halt nur eine zentrale Änderung.
herz4 hat geschrieben: Ich sehe eine Schwierigkeit bei der Eingabe neuer Daten. So lange nur bekannte Ortsnamen einzugeben sind, easy. Was aber bei "neuen", besser unbekannten. In diesem Fall stößt doch ein etwaiges Kombifeld an seine Grenzen, oder? Ich meine, dann müsste der Datenpool Ortsnamen erst aktualisiert werden. Oder gibt es leichtere Methoden?
Korrekt. Bei erstmaliger Eingabe eines neuen Ortes muss ich diesen zuerst in der Tabelle "Ort" erfassen. Ob es da einen leichteren Workaround gibt, weiss ich nicht.
Mir ist bislang nur diese Methode eingefallen...
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von herz4 »

Neujuenger2010 hat geschrieben:Korrekt. Bei erstmaliger Eingabe eines neuen Ortes muss ich diesen zuerst in der Tabelle "Ort" erfassen. Ob es da einen leichteren Workaround gibt, weiss ich nicht.
Mir ist bislang nur diese Methode eingefallen...
Auch bei der Eingabe von Ortsnamen in die Tabelle Ort können Fehler passieren: prinzipiell ist "Muenchen" so allein nicht ausgeschlossen!
Dein Ziel der Vermeidung von Schreibfehlern bei der Eingabe von Ortsnamen kann ich auch näher kommen, wenn ich den Ort mit in der Tabelle Kunden so wie auch die PLZ speichere, und beiden ein Listenfeld im Eingabeformular statt eines Textfeldes gebe, deren Liste ich mit der Abfrage nach bisher gespeicherten Ortsnamen bestenfalls nach abfallender Häufigkeit gefüllt erstelle, gar nicht erst ausklappen lasse dafür aber auf "Autofill" (weiß nicht wie's exakt heißt) einstelle. Wenn dann im Ort der erste Buchstabe eingegeben wird - angenommen "M" - wird automatisch der Ort vorschlagend eingetragen, der mit "M" beginnt und am häufigsten ist. Mit jedem weiter eingetragenen Buchstaben, wird die Auswahl spezieller, bis sie wünschenswert passt oder aber automatisch der "neue" eingetragen wird.
Wenn man erst den Ort einträgt, kann dann der Eintrag der PLZ analog verlaufen und bestenfalls unter Ausfilterung der für den Ort bekannten! Hier sind doch Fehler viel "abwegiger" (postalisch).
Mir scheint einfach die "Auslagerung" nur eines Merkmals - Ort - in eine gesonderte Tabelle allein aufgrund der daraus resultierenden Notwendigkeit des Join bei Abfragen und von Unterformularen in Formularen(!) zu aufwendig, vor allem im Hinblick auf Auswahlabfragen im Formular!
Ich bin weiter sehr an Deiner Argumentation interessiert, weil ich ähnlich gelagerte Probleme versuche zu lösen, die ich mir geschaffen habe ...
Schönen Tag wünscht
René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Neujuenger2010
**
Beiträge: 20
Registriert: Mo, 25.10.2010 18:31

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von Neujuenger2010 »

herz4 hat geschrieben: [....]
Auch bei der Eingabe von Ortsnamen in die Tabelle Ort können Fehler passieren: prinzipiell ist "Muenchen" so allein nicht ausgeschlossen!
Korrekt. Aber dann ziehe ich den Fehler wenigstens konsequent bei allen Münchnern durch und schiebs hinterher auf die Technik... :wink:
herz4 hat geschrieben: [Vorschlag Listenfeld mit "Autofill"]
Sicher auch ein möglicher Weg.
herz4 hat geschrieben: Wenn man erst den Ort einträgt, kann dann der Eintrag der PLZ analog verlaufen und bestenfalls unter Ausfilterung der für den Ort bekannten! Hier sind doch Fehler viel "abwegiger" (postalisch).
Naja, auch hier kann mal eine neue PLZ zu einem bekannten Ort dazukommen --> Fehlerpotential bei der Eingabe.

Ein völlig Fehleingabe-resistentes System wird es wohl nie geben. Dazu sind die User (bei meiner Datenbank: ich) viel zu erfinderisch in dieser Beziehung...
herz4 hat geschrieben: Mir scheint einfach die "Auslagerung" nur eines Merkmals - Ort - in eine gesonderte Tabelle allein aufgrund der daraus resultierenden Notwendigkeit des Join bei Abfragen und von Unterformularen in Formularen(!) zu aufwendig, vor allem im Hinblick auf Auswahlabfragen im Formular!
Ich bin weiter sehr an Deiner Argumentation interessiert, weil ich ähnlich gelagerte Probleme versuche zu lösen, die ich mir geschaffen habe ...
Schönen Tag wünscht
René
Hier muss ich dann aus der Diskussion aussteigen. Ich hab mich noch nicht ansatzweise mit Formularen geschweige denn Unterformularen (Abfragen hab ich ja bereits gelöst :wink: ) beschäftigt. Daher kann ich auch nicht beurteilen, welche Variante (Extra-Tabelle oder Kombinationsfelder) unter Berücksichtigung aller Einsatzmöglichkeiten die zweckmässigste ist.

Dir auch einen schönen Tag!
Gruss Neujuenger2010

OOo 3.2.1 auf Vista
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von herz4 »

Neujuenger2010 hat geschrieben:Korrekt. Aber dann ziehe ich den Fehler wenigstens konsequent bei allen Münchnern durch und schiebs hinterher auf die Technik... :wink:
... scheint nicht ganz zutreffend.
Buchstabendreher oder Umlaut(öäü)-Umschreibungen(?) scheinen mir nicht relevant bei nur mittelmäßig gebildeten Datenbearbeitern (wie Dir). Aber, z. B. der Ort Doberan in der Nähe der wunderschönen Ostseeküste heißt eigentlich Bad Doberan. Kann sein, dass Dir der Fehler des fehlenden Bads nicht unterläuft. Bei mir halte ich das eher für möglich. Er würde wahrscheinlich nur dadurch provoziert, dass der Ort falsch geschrieben steht und von mir so falsch übernommen wird.
Ich "gleiche" das aus, indem ich '%Doberan%' herausfiltere, und beides erhalte: Bad D. und D. allein. Dann kann ich "reparieren"...
Du meinst, bei Dir kommt so etwas nicht vor?!
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Probleme bei Abfrage mit leeren Feldern

Beitrag von DPunch »

Aloha

Wenn ich mich kurz einklinken darf:

Das Totschlagargument für das Auslagern des Ortes ist sicherlich die Normalisierung - da der Ortsname direkt von der PLZ abhängt, gebieten die Regeln der Normalisierung das Auslagern.
herz4 hat geschrieben:Ich "gleiche" das aus, indem ich '%Doberan%' herausfiltere, und beides erhalte: Bad D. und D. allein. Dann kann ich "reparieren"...
Du meinst, bei Dir kommt so etwas nicht vor?!
Nun, für ihn fällt dieses Reparieren nur an einer Stelle an - nämlich in der ausgelagerten Tabelle. Nach Deinem Prinzip müsstest Du dann allerdings *alle* vorkommenden Datensätze mit 'Doberan' ausbessern - und musst dabei noch höllisch aufpassen, dass Du nicht vielleicht auch noch ein "Doberanhausen" irgendwo in Deutschland mitänderst.
Eine Auslagerung, möglicherweise zusammen mit einem UNIQUE - Constraint über die PLZ, macht die Datenbank als Ganzes sicher fehlerresistenter.
Antworten