Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage über zwei Bedingungen

Begonnen von nimora, August 23, 2015, 01:00:46

⏪ vorheriges - nächstes ⏩

nimora

Hallo,

ich stehe irgendwie gerade auf dem Schlauch, vielleicht liegt es aber auch an der Uhrzeit.

ich habe eine "Kundentabelle" mit "name, vorname, texttyp und anrede". anrede ist verknüpft mit der zweiten Tabelle "Anrede" und enthält "Herr, Frau, Mr., Mrs.". Eine weiter Tabelle namens "Texte" liegt vor und als Inhalt liegt da nur ein Text-Typ vor. Also TypA und TpyB. hiermit ist das Feld aus Kundentabelle "texttyp" verkmüpft.

ich möchte in der Kundentabelle nun neben dem Namen die Anrede und den Texttyp auswählen können. Aus dieser Auswahl soll nun aus einer Tabelle "Texte" der richtige Text ausgewählt werden und zwar definiert durch Herr/Frau für deutsche Texte und durch Mr./Mrs. für englische Text und noch durch den Text-Typ. es gibt also zwei texte auf englisch und zwei auf deutsch und je nach auswahl, soll der richtige text ausgewählt werden.

und hier ist der Punkt, an dem ich gerade nicht weiterkomme. Wie verknüpfe ich die Tabelle "Texte" mit den anderen, damit sich das, vielleicht mittels qry erzeugen ließe.

Für ein paar Denkanstöße wäre ich wirklich dankbar :)


DF6GL

Hallo,

kannst Du mal ein konkretes Beispiel zeigen?

Ich befürchte eine falsche Normalisierung...  Wenn anhand der Anrede ein bestimmter Text gewählt werden soll, so ist das Feld "Texttyp" in der Kundentabelle falsch platziert.   Allenfalls kann eine Feld "Kundensprache" in Tabelle "Kunden" dazu dienen, die Anreden passend einzuschränken und in Folge einer dann ausgewählten Anrede der entspr. Text "geholt" werden.

PS:  "Name" als Name für ein Feld sollte tunlichst vermieden werden....  --->  Keine reservierten Wörter bei der Benamsung von eigenerstellten Objekten benutzen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

Hallo,
ergänzend:
Für die Sprache legt man eine extra Tabelle mit einer Zahl als Primärschlüssel. Und diese Zahl wird als Fremdschlüssel in der Anredetabelle passen zur Anrede gespeichert. Der Texttyp in der Kundentabelle entfällt ersatzlos. Die Wahl der richtigen Anrede bestimmt automatisch auch die passende Sprache.
Gruß Klaus

nimora

#3
danke euch beiden.

DF6GL, das mit der Normalisierung kann gut sein. Finde aber gedanklich nicht den Ansatz, dass die Normalisierung stimmt.

@MzKlMu, ich habe Anrede und Sprache mal kombiniert, da ich der Meinung bin, dass man da mit einer Tabelle beides bedienen kann und eine weitere für den Sprachcode aus meiner Sicht zu viel wäre. Ich mag mich irren.
Aber wie du sagts, dass der Texttyp im Kunden entfällt, passt nicht ganz. die Anredesprache regelt auch die Textsprache, aber es gibt pro Sprache auch verschiedene Texte, die ich im Kunden schon auswählen können muss.

Anbei mal die beispiel-DB.

wie gesagt, ich müchte im kunden durch die Auswahl der Anrede nicht nur die Anrede selbst, sondern auch gleich die Sprache der folgenden Texte definieren. und es gibt verschiedene Texte, die ich ebenfalls in der kundenansicht auswählen können möchte. ausgehend von der in der anrede versteckten sprache, soll aus dem gewählten Text noch die richtige textsprache gewählt werden.

und das Gedankenexperiment bzw. die Kombi aus beidem bekomme ich gerade nicht hin.


DF6GL

Hallo,


Zitatdas mit der Normalisierung kann gut sein. Finde aber gedanklich nicht den Ansatz, dass die Normalisierung stimmt.

dann beschäftige Dich mal mit u. st. Links 1 und 1a...



Zitatda ich der Meinung bin, dass man da mit einer Tabelle beides bedienen kann und eine weitere für den Sprachcode aus meiner Sicht zu viel wäre. Ich mag mich irren.

Du irrst.  Ganz einfach.   Siehe konkrete Beschreibung von Klaus.


Zitatund das Gedankenexperiment bzw. die Kombi aus beidem bekomme ich gerade nicht hin

Wird auch so nicht funktionieren...  siehe Normalisierungsregeln..
Wenn Du diese (immer wieder)  ignorierst, eierst Du permanent im Kreise.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

nimora

hast du in meine beispiel-db reingesehen? euren lehrauftrag in allen ehren, aber gib mir bitte einen hinweis, an welcher stelle es dort hapert bzw. der Normalisierung widerspricht, damit ich einen Anhaltspunkt habe.

MzKlMu

Hallo,
Zitatpasst nicht ganz. die Anredesprache regelt auch die Textsprache, aber es gibt pro Sprache auch verschiedene Texte,
doch, das passt. 100%, sobald die Anrede ausgewählt ist liegt über den Fremdschlüssel zur Sprache automatisch auch die Sprache eindeutig fest. In einer Abfrage mit den 3 Tabelle (Daten, Anrede und Sprache) hast Du im Datensatz auch die Sprache. Ein zusätzliches Feld ist da völlig überflüssig.
Eine Sprachtabelle ist nicht zwingend erforderlich aber zu empfehlen, aber die Sprache muss mindestens als Feld in die Tabelle mit der Anrede. Du brauchst nur ein einziges Kombi zur Auswahl der Anrede. Damit ist alles erschlagen.

Ich würde es Dir einbauen, aber ich habe keine Möglichkeit ACCDBs zu öffnen, da ich nur Access2003 (MDB) habe.
Gruß Klaus

nimora

Danke dir.

ist nicht schlimm, dass du es nicht bauen kannst. Ich will es ja auch verstehen und das geht am besten, wenn man es selber macht. Ich habe ja nur um die Denkanstöße gebeten, die du mir jetzt gegeben hast. Ich habe es zwar noch nicht ganz verstanden, aber ich werden mir noch mal die Normalisierungsregeln ansehen, auch wenn ich dies schon gemacht habe und gemeint habe, sie angewendet zu haben.

Ich muss mir die Kommentare noch mal in ruhe ansehen und versuchen umzusetzen. Wenn es nur die spräche wäre und es nur einen Text in DE und einen in EN gäbe, dann wäre alles klar. Ich stocke da, wo neben der Sprache noch auf unterschiedliche Texte der jeweiligen Sprache zugegriffen werden muss. :(

MzKlMu

Hallo,
ZitatIch stocke da, wo neben der Sprache noch auf unterschiedliche Texte der jeweiligen Sprache zugegriffen werden muss.
Wo stehen denn diese Texte, in einer extra Tabelle ?
Wenn ja, wie ist denn da die Sprache hinterlegt ?

Kannst Du mal ein Bild der Beziehungen hier posten ?
Gruß Klaus

nimora

bisher habe ich es nur so angelegt, wie es in der beziehungstabelle zu sehen ist. ich überlege, ob es wie im zweiten bild zu sehen machen. dass ich letztlich doch manuell auswähle, welcher text und damit zusammen gleich die sprache (TexttypA-C und denn ob DE oder EN)

aber eigentlich hätte ich schon lieber dynamisch. Theoretisch ausgedrücke möchte ich eine abfrage, die pfüft, welche Anrede ausgewählt ist und welcher texttyp und sich dann die anrede entsprechend der sprache und des geschlechts (sehr geehrter Herr, sehr geehrte Dame, Dear Mr., Dear Mrs.) wählt und dann prüft, welcher texttyp ist ausgewählt und welche Sprache, um dann den passenden Text in passender sprache auszuwählen. ich habe versuche dazu eine abfrage zu erzeugen, konnte aber schon die bedingungen nicht richtig setzen. wäre doch nciht eine sql-Anweisung in der abfrage hilfreich?

MzKlMu

#10
Hallo,
alleine das Wort Texttyp ist schon ziemlich verwirrend. So wie das jetzt ist kann das nicht stimmen. Das erkennst Du schon daran, dass Du eine englische Anrede und deutsche Texte verwenden könntest. Und das darf nicht sein. Da ist in jedem Falle eine Tabelle für die Sprache notwendig. Jetzt habe ich aber den Sinn der Texte (Texttypen) noch nicht verstanden.
So wie ich das verstehe, hast Du einfach Texte in verschiedenen Sprachen.
Ist das richtig ? Und von den Texten, werden da alle benötigt oder nur eine Auswahl wie bei der Anrede ?
Oder erläutere das mal besser.
Gruß Klaus

nimora

also gemeint ist es wie folgt:

Kunden können zwei verschiedene Arten von antworten auf ihre anfrage bekommen. Sagen wir ein text für normale kunden, ein text für vip-kunden. bei jeden kunden möchte ich entscheiden, was er ist, "normal" oder "vip". jweils der normal, als auch der vip-text liegen in deutsch und in englisch vor. wenn ich also einen kunden als vip definiere, muss noch entschieden werden, in welcher sprache er seinen text bekommen. da von der sprache auch die Anrede im jeweiligen text abhängt, wollte ich das verbinden. über die anrede definiert sich nicht nur die anrede sondern auch die sprache und daraus ergibt sich, welchen text der kunden bekommen.

war das so verständlich?

MzKlMu

Hallo,
die Zusammenhänge sind mir immer noch nicht klar. Ein Kunde hat eine Anrede in der entsprechenden Sprache.
Aber wie ist das mit den Texten, hat ein Kunde nur einen Text (entweder VIP oder normal) in der entsprechenden Sprache ?

Wie sehen denn solche Texte typischerweise aus (in deutsch) für VIP und normal ?

Anbei mal ein Vorschlag für Tabellen und Beziehungen.
Sobald eine Anrede gewählt ist liegt automatisch auch die Zahl (Schlüsselzahl) für die Sprache fest. Damit kann man dann die Texte der Texttabelle filtern.

Siehe Bild.

Ob das passt hängt auch vor Deiner neuen Antwort auf meine Fragen ab.
Gruß Klaus

nimora

Hallo MzKIMu,

danke für die Antwort und sorry für die späte Antwort, es war viel los in der letzten woche.

ein Kunden hat eine anrede - das ist richtig
diese unterscheidet sich nur in der sprache.

jedem kunden kann auch nur ein text zugeordnet werden - vip oder normal,
aber auch hier mit der Unterscheidung der Sprache.

die texte unterscheiden sich in den angebotenen konditionen. vip´s bekommen bessere.

in deiner grafik kann ich dem kunden eine anrede id verpassen. wenn man das mit "Frau, Herr, Mrs. und Mr." füllt, ergibt sich draus die sprache. aber nicht die identifikation des SpracheID_F. es sei denn, ich definiere in der tabelle anrede vorher für Frau und Herr die entsprechende SprachID_F. soweit klar und aus der sprache definiert sich auch die textsprache. nur aber nicht, welchen text der kunde bekommen soll. als Beispie TextVIP oder TextNormal. Genau das ist mein gedanklicher Knackpunkt. ich muss irgendwie zwei bedingungen definieren (sprache und text-typ), wobei der text-typ zusätzlich von der sprache abhängt.

Ich weiss auch nicht, wie ich es anders erklären soll. nur so wie schon gesagt. kunde wird in datenbank abgelegt, über die anrede definiert sich die sprache. zusätzlich kann für jeden kunden ein text-typ definiert werden.

problem, wie kann ich abfragen/definieren, dass die anrede in einer nachricht sich aus dem sprachcode ergibt und der text-typ und die sprache des text-typs ebenfalls korrekt gewählt wird.

Kunde1, Mr., TextVIP
Kunde 2, Frau, TextVIP
Kunde 3, Mrs., TextNormal
Kunde 4, Herr, TextNormal

Schreiben an Kunde 1:

Dear Mr., english VIPText

Schreiben an Kunde 2:

Sehr geehrte Frau, deutscher VIPText

Schreiben Kunde 3:

Dear Mrs., english NormalText

Schrebien Kunde 4:

Sehr geehrter Herr, deutscher NormalText

Ist das so klar? :(

MzKlMu

Hallo,
mein Datenmodell passt so. Sobald die Anrede in der entsprechenden Sprache festgelegt ist, hast Du automatisch auch den entsprechenden Text festgelegt.
Zitataber nicht die identifikation des SpracheID_F.
Aber natürlich liegt die fest. Du wählst doch eine bestimmte Anrede und damit liegt auch die SpracheID_F eindeutig fest. In einem Kombi kannst Du dann die Texte zur Auswahl anbieten mit einem Kriterium das auf die 2.Spalte des Kombis zur Auswahl der Anrede verweist. Und das ist die zur Anrede passende Sprache.
Das funktioniert genau passend zu Deinen Wünschen, jede Wette.
Ich baue Dir das nachher mal zusammen.
Gruß Klaus