Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Kloso am Oktober 20, 2016, 12:45:36

Titel: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 20, 2016, 12:45:36
Hallo Freunde,

stehe nun vor meiner nächsten Herausvorderung. Möchte gerne aus einer Tabelle nur die Zeilen geliefert bekommen die in einer bestimmten Spalte nur 1 Wort (oder auch 1 lange zahl) beinhalten.

bsp:
Hallo Welt  = soll nicht angezeigt werden
Hallo          = 1 wort soll angezeigt werden
123123       = 1 "wort/zahl" soll also auch angezeigt werden
123123 c 43 = mehrere soll also nicht angezeigt werden.

Ich habe mir überlegt das es eventuell mit einem Abfrageparameter und
Like %%
irgendwie möglich sein könnte.
Oder vielleicht mit
WHERE MATCH (...'.. '..) ;

Wie würdet ihr vorgehen? Oder sollte man da lieber eine If anweisung einbauen?

Liebe grüße Kloso
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: el_gomero am Oktober 20, 2016, 12:59:05
Hallo,

beim finden von Leerzeichen (und darum geht es wohl) hilft dir die Funktion instr, beim Prüfen auf reine Zahlen IsNumeric - beides in der Hilfe dokumentiert.
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: DF6GL am Oktober 20, 2016, 13:00:30
Hallo,

quick  and dirty:

Select tbl_Tabelle.*
From tbl_Tabelle
Where InStr([DeinFeld]," ")=0

Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: el_gomero am Oktober 20, 2016, 13:17:25
mal so ne fertige Lösung als Vorschlag:


SELECT DeineTabelle.DeinFeld, InStr([DeinFeld]," ") AS Ausdr1, IIf(IsNumeric([DeinFeld])=0,"Wort","Zahl") AS Ausgabe
FROM DeineTabelle
WHERE InStr([DeinFeld]," ")=0;
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 20, 2016, 13:41:06
Vielen dank euch zwei, funktioniert super.
Liebe Grüße
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 20, 2016, 13:42:12
Habe gehofft ich komme selber darauf wie man den code ändern müsste um zum beispiel von einem auf zwei wörter zu ändern? Aber irgendwie habe ich den code wohl falsch verstanden.
Gruß
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 20, 2016, 13:43:49
habe gedacht
Where InStr([feld], " ")=0;
kann man einfach auf
Where InStr([feld], " ",[feld], " ")=0;
ändern. aber wohl doch nicht so einfach.
Gruß
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: el_gomero am Oktober 20, 2016, 13:57:48
du brauchst dann nur bei der Where-Klausel ="* * *" zu prüfen, die Ausgabe von Werten mit mehr als einem Leerzeichen macht aber die Prüfung auf Zahl obsolet.
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: MaggieMay am Oktober 21, 2016, 00:24:53
Hallo,

den Inhalt von zwei "Wörtern" mit genau einem trennenden Leerzeichen kannst du, analog zur bisherigen Vorgehensweise, mit folgendem Kriterium feststellen:

Where InStr([DeinFeld]," ") > 0 And InStr(Mid([DeinFeld], InStr([DeinFeld]," ")+1), " ") = 0

Das Suchmuster "* * *" findet alles mögliche das zwei Leerzeichen (oder auch mehr) enthält, da der * ja für alles steht. Macht also nicht wirklich Sinn - nicht nur in diesem Zusammenhang - und mit "=" als Vergleichsoperator schon gar nicht.
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 24, 2016, 15:12:36
Hallo,

noch eine Frage zu diesem Thema, wie könnte ich diesen SQL Code umschreiben, so dass die WHERE Klausel nicht auf gesamtes SELECT sich bezieht sondern nur auf Spalte2.

SELECT Count(Spalte1) AS Total1, Count(Spalte2) AS Total2
FROM Tabelle
WHERE InStr([Spalte2]," ")=0;


Beispiel:

Ergebnis (soll):


Total1Total2
1000100

Stattdessen (mit meinem SQL-Code):


Total1Total2
100100

Spricht er führt WHERE für die gesamte Query durch, wie kann man es anders schreiben?
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Beaker s.a. am Oktober 24, 2016, 18:35:47

SELECT Count(T2.Spalte1) AS Total1,
    (SELECT Count(T1.Spalte2) AS Total2
    FROM Tabelle AS T1
    WHERE InStr(T1.Spalte2," ")=0)
FROM Tabelle AS T2

Oder ?
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 25, 2016, 08:53:46
Hallo, danke hat super funktioniert. Habe nicht rausgefunden gehabt dass man 2 Select auf so eine art und weise verbinden kann.
Danke
Titel: Re: Abfrage die Zeilen liefert die in einer bestimmten Spalte nur 1 Wort beinhalten.
Beitrag von: Kloso am Oktober 25, 2016, 09:31:22
Beaker s.a.,

das ist ein wirklich guter Tipp, danke. Ich konnte jetzt problemlos 3 Queries verbinden und sie in einem 4ten Query anzeigen lassen. Super praktisch.

Jedoch sind da 2 weitere Fragen aufgetreten :), Ich versuche mal ohne Code zu beschreiben:


Dankeschön für die Hilfe

PS: Habe die 2. eben wie folgt gelöst:
[] AS Monat
also im Prinzip noch einen Parameter eingebaut der dann die Eingabe einfach anzeigt. Zwar nicht die klugste Lösung aber es funktioniert :D

PS2: Habe die 1. eben auch wie folgt gelöst:
Einfach alle Parameter [gleicher Text], denn wenn der Text gleich ist, dann übernimmt er es für alle. SUPER :)