Suche ueber mehrere Spalten, betroffene Spalte ermitteln

Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 15:23:33 von Klaus Herzberg

Hallo,
ich mache eine Suche ueber eine Tabelle.
Dann habe ich eine Ergebnisliste.
Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
Treffer geliefert hat?

bspw.
Tabelle firma
name
strasse
plz
ort

suche "xyz"

gefunden:
x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.

Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?

Vielen Dank. mfg. klaus.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 15:48:11 von Christian Kirsch

Klaus Herzberg schrieb:
> Hallo,
> ich mache eine Suche ueber eine Tabelle.
> Dann habe ich eine Ergebnisliste.
> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
> Treffer geliefert hat?
>
> bspw.
> Tabelle firma
> name
> strasse
> plz
> ort
>
> suche "xyz"
>
> gefunden:
> x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.
>
> Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?

In SQL? Eher gar nicht. Bzw.: Wozu willst Du das überhaupt wissen?

Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
der Ort auch zufällig übereinstimmt. Dito für Ort. PLZ ist ohnehin nur
eine Ziffern-Buchstaben-Kombination, die in einer anderen Spalten keinen
Sinn ergibt.

Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
beantworten, die sie nicht gestellt haben.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 15:48:11 von Christian Kirsch

Klaus Herzberg schrieb:
> Hallo,
> ich mache eine Suche ueber eine Tabelle.
> Dann habe ich eine Ergebnisliste.
> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
> Treffer geliefert hat?
>
> bspw.
> Tabelle firma
> name
> strasse
> plz
> ort
>
> suche "xyz"
>
> gefunden:
> x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.
>
> Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?

In SQL? Eher gar nicht. Bzw.: Wozu willst Du das überhaupt wissen?

Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
der Ort auch zufällig übereinstimmt. Dito für Ort. PLZ ist ohnehin nur
eine Ziffern-Buchstaben-Kombination, die in einer anderen Spalten keinen
Sinn ergibt.

Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
beantworten, die sie nicht gestellt haben.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 15:55:21 von Klaus Herzberg

Hallo,

Christian Kirsch wrote:
> Klaus Herzberg schrieb:
>> Hallo,
>> ich mache eine Suche ueber eine Tabelle.
>> Dann habe ich eine Ergebnisliste.
>> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
>> Treffer geliefert hat?
>>
>> bspw.
>> Tabelle firma
>> name
>> strasse
>> plz
>> ort
>>
>> suche "xyz"
>>
>> gefunden:
>> x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.
>>
>> Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?
>
> In SQL? Eher gar nicht. Bzw.: Wozu willst Du das überhaupt wissen?

um bspw. in einer Suchfunktion dem Nutzer anzuzeigen, ob der Suchstring
im Firmenname, Adresse oder sonstwo gefunden wurde.

mfg. klaus.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 15:55:21 von Klaus Herzberg

Hallo,

Christian Kirsch wrote:
> Klaus Herzberg schrieb:
>> Hallo,
>> ich mache eine Suche ueber eine Tabelle.
>> Dann habe ich eine Ergebnisliste.
>> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
>> Treffer geliefert hat?
>>
>> bspw.
>> Tabelle firma
>> name
>> strasse
>> plz
>> ort
>>
>> suche "xyz"
>>
>> gefunden:
>> x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.
>>
>> Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?
>
> In SQL? Eher gar nicht. Bzw.: Wozu willst Du das überhaupt wissen?

um bspw. in einer Suchfunktion dem Nutzer anzuzeigen, ob der Suchstring
im Firmenname, Adresse oder sonstwo gefunden wurde.

mfg. klaus.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 16:00:07 von Christian Kirsch

Klaus Herzberg schrieb:
> Hallo,
>
> Christian Kirsch wrote:
>> Klaus Herzberg schrieb:
>>> Hallo,
>>> ich mache eine Suche ueber eine Tabelle.
>>> Dann habe ich eine Ergebnisliste.
>>> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
>>> Treffer geliefert hat?
>>>
>>> bspw.
>>> Tabelle firma
>>> name
>>> strasse
>>> plz
>>> ort
>>>
>>> suche "xyz"
>>>
>>> gefunden:
>>> x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.
>>>
>>> Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?
>> In SQL? Eher gar nicht. Bzw.: Wozu willst Du das überhaupt wissen?
>
> um bspw. in einer Suchfunktion dem Nutzer anzuzeigen, ob der Suchstring
> im Firmenname, Adresse oder sonstwo gefunden wurde.
>

Wie gesagt - das liefert Dir in der Regel zu viele und flasche
Treffer. Wer "Siemens" sucht, weiß, ober er den Firmennamen oder die
Straße meint. Wer aber die Firma Siemens sucht und dann jeden Eintrag
in irgendeiner Siemensstraße serviert bekommt, der fängt an, sich zu
ärgern. Jedenfalls benutze ich diese Amazon-Suche inzwischen nur noch,
wenn ich sicher bin, dass mein Suchstring hinreichend präzise ist.
Alles andere macht mich krank.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 16:00:07 von Christian Kirsch

Klaus Herzberg schrieb:
> Hallo,
>
> Christian Kirsch wrote:
>> Klaus Herzberg schrieb:
>>> Hallo,
>>> ich mache eine Suche ueber eine Tabelle.
>>> Dann habe ich eine Ergebnisliste.
>>> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
>>> Treffer geliefert hat?
>>>
>>> bspw.
>>> Tabelle firma
>>> name
>>> strasse
>>> plz
>>> ort
>>>
>>> suche "xyz"
>>>
>>> gefunden:
>>> x rows, 1 Reihe in Name, 2. Reihe in Strasse, usw.
>>>
>>> Wie finde ich je Zeile raus, welche Spalte den Treffer enthaelt?
>> In SQL? Eher gar nicht. Bzw.: Wozu willst Du das überhaupt wissen?
>
> um bspw. in einer Suchfunktion dem Nutzer anzuzeigen, ob der Suchstring
> im Firmenname, Adresse oder sonstwo gefunden wurde.
>

Wie gesagt - das liefert Dir in der Regel zu viele und flasche
Treffer. Wer "Siemens" sucht, weiß, ober er den Firmennamen oder die
Straße meint. Wer aber die Firma Siemens sucht und dann jeden Eintrag
in irgendeiner Siemensstraße serviert bekommt, der fängt an, sich zu
ärgern. Jedenfalls benutze ich diese Amazon-Suche inzwischen nur noch,
wenn ich sicher bin, dass mein Suchstring hinreichend präzise ist.
Alles andere macht mich krank.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 16:18:06 von Thomas Rachel

Klaus Herzberg wrote:

> ich mache eine Suche ueber eine Tabelle.

Wie?

> Dann habe ich eine Ergebnisliste.

Ja.

> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
> Treffer geliefert hat?

Durch geeignete Formulierung der Suche bzw. Aufstückelung. Wie lautet denn
Dein Query?


Thomas

[Xpost beibehalten, da ich mir nicht sicher bin, ob Du wirklich von MySQL
redest bzw. was Du genau vor hast]

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 16:18:06 von Thomas Rachel

Klaus Herzberg wrote:

> ich mache eine Suche ueber eine Tabelle.

Wie?

> Dann habe ich eine Ergebnisliste.

Ja.

> Ich wuerde gerne moeglichst einfach rausbekommen, welche Spalte den
> Treffer geliefert hat?

Durch geeignete Formulierung der Suche bzw. Aufstückelung. Wie lautet denn
Dein Query?


Thomas

[Xpost beibehalten, da ich mir nicht sicher bin, ob Du wirklich von MySQL
redest bzw. was Du genau vor hast]

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 16:37:09 von Klaus Herzberg

Hallo
Thomas Rachel wrote:
> Durch geeignete Formulierung der Suche bzw. Aufstückelung. Wie lautet denn
mit einer Aufstueckelung waere es sicherlich kein Problem. Die wollte
ich natuerlich gern vermeiden.

Aber ich sehen an den Postings, dass es wahrscheinlich nicht so einfach
ist bzw. keine SQL-Anweisung dafuer vorhanden ist.

mfg. klaus.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 16:37:09 von Klaus Herzberg

Hallo
Thomas Rachel wrote:
> Durch geeignete Formulierung der Suche bzw. Aufstückelung. Wie lautet denn
mit einer Aufstueckelung waere es sicherlich kein Problem. Die wollte
ich natuerlich gern vermeiden.

Aber ich sehen an den Postings, dass es wahrscheinlich nicht so einfach
ist bzw. keine SQL-Anweisung dafuer vorhanden ist.

mfg. klaus.

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 18:33:12 von Irmgard Schwenteck

Christian Kirsch schrieb:

> Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
> einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
> der Ort auch zufällig übereinstimmt.

Doch, da gibt es schon sinnvolle Nutzung.
In unserer Adressdatenbank sind für den Firmennahmen 2 Zeilen (Felder)
vorgesehen und es gibt noch ein Feld für die Kurzbezeichnung.

Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
"sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
das schon so genau.
Ein anderer sucht nur nach der Abkürzung, weil er sich die besser
eingeprägt hat, "TJM" kommt aber z.B. in "Justizministerium" gar nicht vor.
Und dann muß die Suche natürlich über die 3 Spalten gehen.

Oder wenn ich nach einem Artikel suche - das Suchwort kann in der
Artikelbezeichnung oder im Beschreibungstext vorkommen.

> Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
> beantworten, die sie nicht gestellt haben.

Aber die Benutzer wissen nicht, wie die Tabellenstruktur dahinter
aussieht und das müssen sie auch nicht.

Zu den Spalten:
Über die sql-Abfrage bekommt man das nicht raus.
Man könnte vielleicht die Ausgabe noch mal mit substr parsen,
auseinandernehmen und vor und nach den gefundenen strings "" bzw.
reinbasteln und das mit css formatieren.

Gruß
Irmgard

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 18:33:12 von Irmgard Schwenteck

Christian Kirsch schrieb:

> Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
> einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
> der Ort auch zufällig übereinstimmt.

Doch, da gibt es schon sinnvolle Nutzung.
In unserer Adressdatenbank sind für den Firmennahmen 2 Zeilen (Felder)
vorgesehen und es gibt noch ein Feld für die Kurzbezeichnung.

Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
"sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
das schon so genau.
Ein anderer sucht nur nach der Abkürzung, weil er sich die besser
eingeprägt hat, "TJM" kommt aber z.B. in "Justizministerium" gar nicht vor.
Und dann muß die Suche natürlich über die 3 Spalten gehen.

Oder wenn ich nach einem Artikel suche - das Suchwort kann in der
Artikelbezeichnung oder im Beschreibungstext vorkommen.

> Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
> beantworten, die sie nicht gestellt haben.

Aber die Benutzer wissen nicht, wie die Tabellenstruktur dahinter
aussieht und das müssen sie auch nicht.

Zu den Spalten:
Über die sql-Abfrage bekommt man das nicht raus.
Man könnte vielleicht die Ausgabe noch mal mit substr parsen,
auseinandernehmen und vor und nach den gefundenen strings "" bzw.
reinbasteln und das mit css formatieren.

Gruß
Irmgard

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 20:33:52 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 11.05.2006 20:33:52 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 12.05.2006 10:49:02 von Axel Schwenke

Irmgard Schwenteck wrote:
> Christian Kirsch schrieb:
>
>> Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
>> einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
>> der Ort auch zufällig übereinstimmt.
>
> Doch, da gibt es schon sinnvolle Nutzung.
> In unserer Adressdatenbank sind für den Firmennahmen 2 Zeilen (Felder)
> vorgesehen und es gibt noch ein Feld für die Kurzbezeichnung.
>
> Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
> Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
> "sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
> das schon so genau.
> Ein anderer sucht nur nach der Abkürzung, weil er sich die besser
> eingeprägt hat, "TJM" kommt aber z.B. in "Justizministerium" gar nicht vor.
> Und dann muß die Suche natürlich über die 3 Spalten gehen.

Schon klar, nur warum sollte man wissen wollen, ob eine Suche *nach
dem Firmennamen* in der ersten, der zweiten oder der dritten Spalte
gematcht hat? Wobei mir die Sache mit zwei Feldern für zwei Zeilen
im Formular merkwürdig erscheint. Klar, auf Papierformularen sieht
man gern zwei Zeilen vor, weil die Papierbreite eingeschränkt ist.
Für ein HTML-Formular würde man ein TEXTAREA Feld nehmen und den
Firmennamen in *einer* Spalte in der Datenbank speichern.

> Oder wenn ich nach einem Artikel suche - das Suchwort kann in der
> Artikelbezeichnung oder im Beschreibungstext vorkommen.

Dann hat man einen angepaßten Index für die Suche nach Artikeln zu
erstellen. Typischerweise enthält der Index sowohl die Bezeichnung
(oder einen einzeiligen Kurztext) als auch die lange Beschreibung,
typischerweise mit höherer Gewichtung für ersteres.

>> Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
>> beantworten, die sie nicht gestellt haben.
>
> Aber die Benutzer wissen nicht, wie die Tabellenstruktur dahinter
> aussieht und das müssen sie auch nicht.

Und genau *das* ist der Teil der Arbeit, den der Applikations-
designer leisten muß. Für die meisten Dinge, die man suchen will,
gibt es separate, orthogonale Suchdimensionen. Bleiben wir beim
Beispiel "Firma". Wonach könnte man suchen wollen?

a) Firmenname
b) Adresse
c) Branche

Eine vernünftige Suchmaske für Firmen würde also drei Eingabefelder
haben und auf bis zu drei Indizes suchen. Das bedeutet aber *nicht*
daß Firmen in der Datenbank in drei Spalten gespeichert sind. Es ist
Aufgabe des Entwicklers, die verschiedenen Sichten des Anwenders und
der Datenbank aufeinander abzubilden.

Wie man das konkret löst, hängt von Randbedingungen ab. Z.B. könnte
man je einen MySQL-Volltextindex über die (SQL)-Spaltengruppen legen,
die obige (Such)-Spalten repräsentieren. Oder man baut einen Trigger,
der die Suchspalten redundant in eine Suchtabelle schreibt. Oder man
läßt den Trigger die Daten in eine externe Volltext-Suchmaschine
schieben. etc. pp.

Was man aber *nicht* macht: nur ein Eingabefeld, eine Suche über alle
Felder aller Objekte - und dann bei jedem Treffer mit ausgeben:
"Suchwort 'foo' wurde in Eigenschaft 'bar' für 'trallala' gefunden"


XL

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 12.05.2006 10:49:02 von Axel Schwenke

Irmgard Schwenteck wrote:
> Christian Kirsch schrieb:
>
>> Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
>> einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
>> der Ort auch zufällig übereinstimmt.
>
> Doch, da gibt es schon sinnvolle Nutzung.
> In unserer Adressdatenbank sind für den Firmennahmen 2 Zeilen (Felder)
> vorgesehen und es gibt noch ein Feld für die Kurzbezeichnung.
>
> Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
> Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
> "sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
> das schon so genau.
> Ein anderer sucht nur nach der Abkürzung, weil er sich die besser
> eingeprägt hat, "TJM" kommt aber z.B. in "Justizministerium" gar nicht vor.
> Und dann muß die Suche natürlich über die 3 Spalten gehen.

Schon klar, nur warum sollte man wissen wollen, ob eine Suche *nach
dem Firmennamen* in der ersten, der zweiten oder der dritten Spalte
gematcht hat? Wobei mir die Sache mit zwei Feldern für zwei Zeilen
im Formular merkwürdig erscheint. Klar, auf Papierformularen sieht
man gern zwei Zeilen vor, weil die Papierbreite eingeschränkt ist.
Für ein HTML-Formular würde man ein TEXTAREA Feld nehmen und den
Firmennamen in *einer* Spalte in der Datenbank speichern.

> Oder wenn ich nach einem Artikel suche - das Suchwort kann in der
> Artikelbezeichnung oder im Beschreibungstext vorkommen.

Dann hat man einen angepaßten Index für die Suche nach Artikeln zu
erstellen. Typischerweise enthält der Index sowohl die Bezeichnung
(oder einen einzeiligen Kurztext) als auch die lange Beschreibung,
typischerweise mit höherer Gewichtung für ersteres.

>> Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
>> beantworten, die sie nicht gestellt haben.
>
> Aber die Benutzer wissen nicht, wie die Tabellenstruktur dahinter
> aussieht und das müssen sie auch nicht.

Und genau *das* ist der Teil der Arbeit, den der Applikations-
designer leisten muß. Für die meisten Dinge, die man suchen will,
gibt es separate, orthogonale Suchdimensionen. Bleiben wir beim
Beispiel "Firma". Wonach könnte man suchen wollen?

a) Firmenname
b) Adresse
c) Branche

Eine vernünftige Suchmaske für Firmen würde also drei Eingabefelder
haben und auf bis zu drei Indizes suchen. Das bedeutet aber *nicht*
daß Firmen in der Datenbank in drei Spalten gespeichert sind. Es ist
Aufgabe des Entwicklers, die verschiedenen Sichten des Anwenders und
der Datenbank aufeinander abzubilden.

Wie man das konkret löst, hängt von Randbedingungen ab. Z.B. könnte
man je einen MySQL-Volltextindex über die (SQL)-Spaltengruppen legen,
die obige (Such)-Spalten repräsentieren. Oder man baut einen Trigger,
der die Suchspalten redundant in eine Suchtabelle schreibt. Oder man
läßt den Trigger die Daten in eine externe Volltext-Suchmaschine
schieben. etc. pp.

Was man aber *nicht* macht: nur ein Eingabefeld, eine Suche über alle
Felder aller Objekte - und dann bei jedem Treffer mit ausgeben:
"Suchwort 'foo' wurde in Eigenschaft 'bar' für 'trallala' gefunden"


XL

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 12.05.2006 11:18:17 von Christian Kirsch

Irmgard Schwenteck schrieb:
> Christian Kirsch schrieb:
>
>> Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
>> einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
>> der Ort auch zufällig übereinstimmt.
>
> Doch, da gibt es schon sinnvolle Nutzung.
> In unserer Adressdatenbank sind für den Firmennahmen 2 Zeilen (Felder)
> vorgesehen und es gibt noch ein Feld für die Kurzbezeichnung.
>
> Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
> Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
> "sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
> das schon so genau.

Ja. Das löst man m.E. in der Applikation (ich möchte jetzt nicht
darüber räsonnieren, *warum* man in einer Datenbank zwei Felder für
einen Namen benutzt.) Aber der Anwender sucht eben nach einem Namen,
und er will einen Namen zurückbekommen. Wenn der Anwender 'Thüring*'
als Namen eingibt, dann möchte er/sie eben gerade *nicht* jeden
Eintrag bekommen, in dem jemand in der Thüringer
Straße/Allee/Gasse/Chaussee wohnt oder neulich mal einen Container
Thüringer Rostbratwurst bestellt hat.

Ich argumentiere nicht gegen unscharfe Suchen - die sind sinnvoll. Ich
argumentiere gegen "Lass den Benutzer einen String eingeben und
liefere ihm dann alle Einträge zurück, in denen dieser String
*irgendwo* vorkommt". Warum so ein Vorgehen Quatsch ist, zeigt eine
Suche bei Amazon nach (z.B.) 'Perl'.

> Ein anderer sucht nur nach der Abkürzung, weil er sich die besser
> eingeprägt hat, "TJM" kommt aber z.B. in "Justizministerium" gar nicht vor.
> Und dann muß die Suche natürlich über die 3 Spalten gehen.

Ja. Aber immer noch sucht der Benutzer nach dem Namen einer Firma oder
Institution. Eben gerade *nicht* nach einer Straße.

>
> Oder wenn ich nach einem Artikel suche - das Suchwort kann in der
> Artikelbezeichnung oder im Beschreibungstext vorkommen.
>
>> Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
>> beantworten, die sie nicht gestellt haben.
>
> Aber die Benutzer wissen nicht, wie die Tabellenstruktur dahinter
> aussieht und das müssen sie auch nicht.
>

Stimmt. Ich habe nix anderes behauptet. Ich habe nur gesagt: Benutzer
wissen, was sie suchen, nämlich einen Namen oder eine Straße, einen
Ort oder eine Postleitzahl. Also biete ich in der Suchmaske
entsprechend benannte Felder an und kümmere mich IN DER ANWENDUNG
darum, das auf geeignete SQL-Abfragen abzubilden.

> Zu den Spalten:
> Über die sql-Abfrage bekommt man das nicht raus.
> Man könnte vielleicht die Ausgabe noch mal mit substr parsen,
> auseinandernehmen und vor und nach den gefundenen strings "" bzw.
>
reinbasteln und das mit css formatieren.
>
Hört sich nach einer aufwendigen Methode an, sich in den Fuß zu
schießen ;-)

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 12.05.2006 11:18:17 von Christian Kirsch

Irmgard Schwenteck schrieb:
> Christian Kirsch schrieb:
>
>> Ich halte solche Fragestellungen für wenig zweckmäßig, BTW. Wenn ich
>> einen Firmen*namen* suche, dann will ich nicht alle Einträge, in denen
>> der Ort auch zufällig übereinstimmt.
>
> Doch, da gibt es schon sinnvolle Nutzung.
> In unserer Adressdatenbank sind für den Firmennahmen 2 Zeilen (Felder)
> vorgesehen und es gibt noch ein Feld für die Kurzbezeichnung.
>
> Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
> Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
> "sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
> das schon so genau.

Ja. Das löst man m.E. in der Applikation (ich möchte jetzt nicht
darüber räsonnieren, *warum* man in einer Datenbank zwei Felder für
einen Namen benutzt.) Aber der Anwender sucht eben nach einem Namen,
und er will einen Namen zurückbekommen. Wenn der Anwender 'Thüring*'
als Namen eingibt, dann möchte er/sie eben gerade *nicht* jeden
Eintrag bekommen, in dem jemand in der Thüringer
Straße/Allee/Gasse/Chaussee wohnt oder neulich mal einen Container
Thüringer Rostbratwurst bestellt hat.

Ich argumentiere nicht gegen unscharfe Suchen - die sind sinnvoll. Ich
argumentiere gegen "Lass den Benutzer einen String eingeben und
liefere ihm dann alle Einträge zurück, in denen dieser String
*irgendwo* vorkommt". Warum so ein Vorgehen Quatsch ist, zeigt eine
Suche bei Amazon nach (z.B.) 'Perl'.

> Ein anderer sucht nur nach der Abkürzung, weil er sich die besser
> eingeprägt hat, "TJM" kommt aber z.B. in "Justizministerium" gar nicht vor.
> Und dann muß die Suche natürlich über die 3 Spalten gehen.

Ja. Aber immer noch sucht der Benutzer nach dem Namen einer Firma oder
Institution. Eben gerade *nicht* nach einer Straße.

>
> Oder wenn ich nach einem Artikel suche - das Suchwort kann in der
> Artikelbezeichnung oder im Beschreibungstext vorkommen.
>
>> Kurz: Deine Benutzer wissen, was sie suchen. Du musst keine Fragen
>> beantworten, die sie nicht gestellt haben.
>
> Aber die Benutzer wissen nicht, wie die Tabellenstruktur dahinter
> aussieht und das müssen sie auch nicht.
>

Stimmt. Ich habe nix anderes behauptet. Ich habe nur gesagt: Benutzer
wissen, was sie suchen, nämlich einen Namen oder eine Straße, einen
Ort oder eine Postleitzahl. Also biete ich in der Suchmaske
entsprechend benannte Felder an und kümmere mich IN DER ANWENDUNG
darum, das auf geeignete SQL-Abfragen abzubilden.

> Zu den Spalten:
> Über die sql-Abfrage bekommt man das nicht raus.
> Man könnte vielleicht die Ausgabe noch mal mit substr parsen,
> auseinandernehmen und vor und nach den gefundenen strings "" bzw.
>
reinbasteln und das mit css formatieren.
>
Hört sich nach einer aufwendigen Methode an, sich in den Fuß zu
schießen ;-)

Re: Suche ueber mehrere Spalten, betroffene Spalte ermitteln

am 12.05.2006 13:21:04 von Irmgard Schwenteck

Hallo

Christian Kirsch schrieb:
>>
>> Wer da sucht, der weiß nicht, wie z.B. das "Thüringer Ministerium für
>> Familie, Soziales und Gesundheit" aufgeteilt ist, der will einfach nach
>> "sozial" suchen - könnte ja auch "Sozialministerium" heißen, wer weiß
>> das schon so genau.
>
> Ja. Das löst man m.E. in der Applikation (ich möchte jetzt nicht
> darüber räsonnieren, *warum* man in einer Datenbank zwei Felder für
> einen Namen benutzt.) Aber der Anwender sucht eben nach einem Namen,
> und er will einen Namen zurückbekommen. Wenn der Anwender 'Thüring*'
> als Namen eingibt, dann möchte er/sie eben gerade *nicht* jeden
> Eintrag bekommen, in dem jemand in der Thüringer
> Straße/Allee/Gasse/Chaussee wohnt oder neulich mal einen Container
> Thüringer Rostbratwurst bestellt hat.

In unserem Fall ist die Anwendung fertig. Die Datenstruktur ist eben so;
ich hab nur noch ein paar zusätzliche Abfragen auf die SQl-Datenbank im
Intranet programmiert.
Und es liegt dann doch in meinem Ermessen, welche Spalten ich alles
abfrage. Ist doch keine Pflicht, Straße/Ort/wasweißich noch alles in die
Abfrage mit einzubeziehen.

Und daß mehrere Felder für den Firmenname vorgesehen sind, ist durchaus
üblich.
Allein schon deswegen, damit die Rechnungsanschrift ins Brief-Fenster paßt.
Daß der Anwendung zu überlassen, den Zeilenumbruch irgendwie zu setzen,
kann zu unschönen Adressangaben führen.
Es gibt da so viele Varianten, daß man das dem Erfasser der Adresse
überlassen sollte:
Firmenbezeichnung, Standort, Abteilung
oder Firma und Außenstelle
Oder Universität und Fakultät
oder sehr langer Firmen/Behördename, sinnvoll aufgeteilt
oder Firma und Inhaber


Ich hör mal auf mit dem crossposting und bleibe in dcdm

Gruß
Irmgard