MS Access Ausgabe von Daten mit bestimmten Anfang

Hallo,

ich habe da mal eine Frage zu Einer Datenabfrage in Microsoft Access:
Ich habe 2 Tabellen, T1 enthält das komplette deutsche Wörterbuch, T2 enthält einige wenige Begriffe. Ich brauche nun einen Datenextrakt aus T1, welche mit den Begriffen aus T2 anfangen.
Beispiel:
Begriff T2 = „Haus“
Ergebnis soll eine Liste aller Begriffe sein, die mit „Haus“ anfangen (z.B. „Hausbau“, „Hauskauf“, usw)

Kann jemand helfen

Hallo Uli,

diese Abfrage ist möglich, aber leider nicht in der Entwurfsansicht der Abfrage, sondern in der SQL-Ansicht.

Als Beispiel hab ich hier ein SQL auf zwei Tabellen. Das eine enthält das Wörterbuch, das andere die Abkürzungen wie Haus, die zum Filtern der Daten aus dem Wörterbuch dienen sollen. Mit dem Befehl LIKE kann
man sich Teilausdrück zusammenbauen und als Bedingung geben.

Beispiel:
SELECT
T_Woerterbuch.Wort
FROM
T_Abkuerzungen LEFT JOIN T_Woerterbuch
ON T_Woerterbuch.Wort like T_Abkuerzungen.Wort & „*“;

Ich hoffe das hilft dir weiter!

Viele Grüße
Özhan

Hallo Özhan,

vielen Dank für deine Antwort!
Leider bin ich nicht so der SQL Experte und hab da nicht so die Erfahrungen mit. Wie baue ich das denn auf, wenn es keine herkömmliche Abfrage ist?

Gruß Ulli

Bin leider nicht mehr firm in Access.
Da muß ich mich wohl mal austragen als Experte…wußte ich gar nicht mehr, daß ich da noch genannte bin.
Sorry und Gruß, Regina

Moin,

das machst du am besten über einen SQL-Left Join:

SELECT * FROM T2 LEFT JOIN T1 ON T1.wort LIKE CONCAT(T2.suchwort,’%’);

„wort“ und „suchwort“ musst du natürlich noch durch die entsprechenden Tabellenfeld-Namen ersetzen.

Gruß,
Blasenfuss

Hi,
habe das eben erst gesehen - ist das noch offen?

P.S.:
Falls das noch offen ist:
Die Anforderung ist schon extrem merkwürdig, denn normalerweise hat man bei sowas doch immer nur je einen Begriff und keine Liste von Begriffen, und zweitens sind die Begriffe nur flüchtig und werden nicht extra in einer Tabelle gespeichert?
Betrifft jeweils das aus T1.

Ist das wirklich nötig, daß eine ganze Liste von Begriffe gleichzeitig benutzt werden muß?

Hallo micmen,

also die Antwort der Abfrage soll schon in eine extra Tabelle gespeichert werden. Stehe beruflich vor diesem Problem und habe es versucht mit dem Wörterbuch Beispiel zu vereinfachen.

Stelle es dir so vor:
Der Kunde schickt uns eine Liste mit ca 50 Begriffen und möchte eine Liste zurück, in denen alle Wörterbucheinträge beginnend mit den Begriffen seiner Liste enthalten ist.

Ich hoffe ich konnte weiterhelfen…

Gruß Ulli

Hi,
das ist jetzt aber was anderes:
Wenn das, was Du hieer „Antwort“ nennst, in einer Tabelle gespeichert werden soll, dann eröffnet sich eine neue Möglichkeit: Dann kannst Du nämlich datensatzweise anfügen, und daher doch jeden Begriff des Kunden einzeln verarbeiten.

Also Du durchläufst seine Liste und für jeden seiner Begriffe erhältst Du aus einer Abfrage alle Wörterbuch-Einträge und dieses Abfrageergebnis läßt Du automatisch an eine andere Tabelle anfügen. Pro Begriff aus der Kundenliste ein Durchgang und zum Schluß sind alle Ergebnisse in der neuen Tabelle.

Wäre das gut so?

Wie fit bist Du denn in Access, also was davon könntest Du denn bauen?

Und in welcher Form kriegst Du denn die Kundenliste - doch nicht als Access-Tabelle in Deiner Wörterbuch-Datenbank? Und wieviele Felder hat denn Deine Wörterbuch-Tabelle?

Also im Grunde genommen nutze ich Access in diesem Fall nur als Tool für Auswertungen, nicht explizit als Datenbank. Die Kundenliste bekomme ich in Excel, kopiere mir diese Daten dann in einer Access Tabelle. Hier ist auch eine Tabelle mit den Wörterbucheinträgen vorhanden.
Eine Art Tabellenerstellungsabfrage wäre super, weiß halt nur nicht wie er alle Begriffe findet die mit der Kundenliste anfangen.

Bin nicht der Held in Access, gerade nicht was SQL angeht. Aber ich habe ein recht gutes Datenbankverständnis.

Hoffe die Info helfen dir?

Hi,
ich nenn mal das Feld von T1 „Wort“, das von T2 „Begriff“.
Dann öffne ne neue Abfrage in der SQL-Ansicht und kopiere folgenden Text rein:

SELECT Left([Wort],Len([Begriff])) AS Ausdr1, T2.Begriff, T1.Wort
FROM T1, T2
WHERE (((Left([Wort],Len([Begriff])))=[Begriff]));

Ersetze jetzt „Wort“ und „Begriff“ durch die Namen in deinen Tabellen.
Du kannst zur Enwurfsansicht umschalten, das ist vermutlich übersichtlicher. Jetzt lass die Abfrage laufen. Das ist n guter Zeitpunkt, nen Kaffee zu machen.
Es geht übrigens auch kürzer:
SELECT T1.Wort
FROM T1, T2
WHERE Left([Wort],Len([Begriff]))=[Begriff];
Aber man hat weniger Kontrolle.
Gruß Thomas

Am einfachsten ist eine Abfrage, in der das Feld mit den Begriffen des Wörterbuchs gewählt wird und bei Kriterien wie"Haus*" eingegeben wird. Dann werden alle Begriffe, die mit Haus beginnen, ausgegeben. Wenn allerdings alle Begriffe ausgegeben werden sollen, die in der Tabelle 2 stehen, müsste man schon in Visual Basic ausweichen.
Gruß