partieller Feldervergleich

partieller Feldervergleich

am 12.06.2006 21:48:24 von Erhard Rainer

Ich muß vorwegschicken, dass meine MySQL-Kenntnisse - nach jahrelanger
Nicht-Nutzung - ziemlich eingerostet sind. Daher bitte ich Euch mir ein
klein wenig auf die Spruenge zu helfen.

Ich habe in Tabelle1 eine Liste von Stichworten in einem Feld stehen
(stichwort1, stichwort2, ...), die ich in Var $key1 schreibe, und in
Tabelle2 eine weiter Liste von Stichworten (stichwort2, stichwort4). Wie
schaffe ich es, dass mir Tabelle2 ausgegeben wird, wenn eines der
Stichworte uebereinstimmt.

Bsp.: Tabelle1
Titel | Stichworte1
Buch1 | PHP, MySQL, ASP
Buch2 | PHP, PHP3

Tabelle2:
Link | Stichworte2
Link1 | MySQL, PHP3

Wie schaffe ich es bei obrigen Bsp, dass Link1 mit Buch1 und Buch2 ueber
die Stichworte in Verbindung gebracht wird. (Link1 - MySQL ==> Buch1)
bzw. (Link1 - PHP3 ==> Buch2)

Also in etwa:
| SELECT * FROM Tabelle1 WHERE Stichworte1 = {beliebiger Teil von
| Stichworte2 getrennt durch ","}

Irgendwie muesste das doch mit regulaeren Ausdruecken zu bewerkstelligen
sein, oder? Hat jemand diesbezueglich vielleicht eine Idee?

TIA
Erhard

Re: partieller Feldervergleich

am 13.06.2006 09:18:46 von Fabian Schladitz

Erhard Rainer schrieb:
> Ich muß vorwegschicken, dass meine MySQL-Kenntnisse - nach jahrelange=
r=20
> Nicht-Nutzung - ziemlich eingerostet sind. Daher bitte ich Euch mir ein=
=20
> klein wenig auf die Spruenge zu helfen.=20
>=20
> Bsp.: Tabelle1
> Titel | Stichworte1
> Buch1 | PHP, MySQL, ASP
> Buch2 | PHP, PHP3
>=20
> Tabelle2:
> Link | Stichworte2
> Link1 | MySQL, PHP3
>=20
> Wie schaffe ich es bei obrigen Bsp, dass Link1 mit Buch1 und Buch2 uebe=
r=20
> die Stichworte in Verbindung gebracht wird. (Link1 - MySQL ==> Buch=
1)=20
> bzw. (Link1 - PHP3 ==> Buch2)
>=20
> Also in etwa:
> | SELECT * FROM Tabelle1 WHERE Stichworte1 =3D {beliebiger Teil von=20
> | Stichworte2 getrennt durch ","}
>=20
> Irgendwie muesste das doch mit regulaeren Ausdruecken zu bewerkstellige=
n=20
> sein, oder? Hat jemand diesbezueglich vielleicht eine Idee?

Meine Idee: normalisiere deine Tabellen, dann ist es kein Problem und=20
braucht keine teure RegExp - die sind nämlich kein Allheilmittel,=20
insbesondere, wenn es um Datenbankperformanz geht.

Tabelle1 aka Buecher
ID | Titel
1 | Buch1
2 | Buch2

Tabelle2 aka Links
ID | Link
100| Link1

Stichwoerter
ID | Stichwort
1 | PHP
2 | PHP3
3 | MySQL
4 | ASP

BuecherStichworte
BuchID | StichwortID
1 | 1
1 | 3
1 | 4
2 | 3
2 | 2

LinksStichworte
LinkID | StichwortID
100 | 3
100 | 2


Dann kannst du den Kram einfach per Select holen. Außerdem kannst du=20
beim Eintragen der Stichworte Comboboxen anbieten o.ä. sonst gibt es ma=
l=20
jemanden, der sich vertippt und schon werden die Bücher nicht mehr gefu=
nden.

Klingt das so in Ordnung, oder habe ich was vergessen.

Nein... ich hab keine Idee, wie du das mit einer RegExp machen kannst=20
und ich empfehle es dir auch nicht. Das ist _wirklich_ nicht performant.


--=20
HTH,
Fabian

Re: partieller Feldervergleich

am 13.06.2006 12:35:17 von Erhard Rainer

Fabian Schladitz wrote:

> Dann kannst du den Kram einfach per Select holen. Auáerdem kannst du
> beim Eintragen der Stichworte Comboboxen anbieten o.„. sonst gibt es
> mal jemanden, der sich vertippt und schon werden die Bcher nicht mehr
> gefunden.
>
> Klingt das so in Ordnung, oder habe ich was vergessen.

Da hast du sicherlich recht, dass das so ginge. Ich persoenlich habe jedoch
bedenken, dass es dann sich in Richtung Taxonomie entwickelt, ich aber eher
in Richtung Folksonomy/collaborative tagging die Anwendung entwickeln
moechte. Sofern immer die selben Stichworte verwendet werden, waere ich
voll deiner Meinung. Wenn jeder aber andere Stichworte verwendet - im Sinne
der kollaborative Klassifikation wie beispielsweise bei Flickr - bin ich
mir nicht sicher, ob nicht RegExp der bessere Ansatz sind. Naeher moechte
ich das aber nicht aufuehren, da es sich eher um gesellschaftliche
Phaenomene handet, als um technische Probleme.

Re: partieller Feldervergleich

am 13.06.2006 13:02:12 von Christian Kirsch

Erhard Rainer schrieb:
> Fabian Schladitz wrote:
>
>> Dann kannst du den Kram einfach per Select holen. Auáerdem kannst du
>> beim Eintragen der Stichworte Comboboxen anbieten o.�. sonst gibt es
>> mal jemanden, der sich vertippt und schon werden die B�cher nicht mehr
>> gefunden.
>>
>> Klingt das so in Ordnung, oder habe ich was vergessen.
>
> Da hast du sicherlich recht, dass das so ginge. Ich persoenlich habe jedoch
> bedenken, dass es dann sich in Richtung Taxonomie entwickelt, ich aber eher
> in Richtung Folksonomy/collaborative tagging die Anwendung entwickeln
> moechte. Sofern immer die selben Stichworte verwendet werden, waere ich
> voll deiner Meinung. Wenn jeder aber andere Stichworte verwendet - im Sinne
> der kollaborative Klassifikation wie beispielsweise bei Flickr - bin ich
> mir nicht sicher, ob nicht RegExp der bessere Ansatz sind. Naeher moechte
> ich das aber nicht aufuehren, da es sich eher um gesellschaftliche
> Phaenomene handet, als um technische Probleme.

Das hat doch mit dem DB-Design nix zu tun. Das ist, so wie Du es in
Deinem ersten Posting beschrieben hast, Mist. Ob Du in Deiner Anwendung
jedem erlaubst, neue Stichwörter zu erfinden (auf die Gefahr hin,
Doppler oder unnötige Ähnlichkeiten zu bekommen) oder nicht, hat mit dem
DB-Design gar nichts zu tun.

Re: partieller Feldervergleich

am 14.06.2006 09:10:18 von Fabian Schladitz

Erhard Rainer schrieb:
> Fabian Schladitz wrote:
>=20
>=20
>>Dann kannst du den Kram einfach per Select holen. Außerdem kannst du =

>>beim Eintragen der Stichworte Comboboxen anbieten o.ä. sonst gibt es
>>mal jemanden, der sich vertippt und schon werden die Bücher nicht meh=
r
>>gefunden.=20
>>
>>Klingt das so in Ordnung, oder habe ich was vergessen.
>=20
>=20
> Da hast du sicherlich recht, dass das so ginge. Ich persoenlich habe je=
doch=20
> bedenken, dass es dann sich in Richtung Taxonomie entwickelt, ich aber =
eher=20
> in Richtung Folksonomy/collaborative tagging die Anwendung entwickeln=20
> moechte. Sofern immer die selben Stichworte verwendet werden, waere ich=
=20
> voll deiner Meinung. Wenn jeder aber andere Stichworte verwendet - im S=
inne=20
> der kollaborative Klassifikation wie beispielsweise bei Flickr - bin ic=
h=20
> mir nicht sicher, ob nicht RegExp der bessere Ansatz sind. Naeher moech=
te=20
> ich das aber nicht aufuehren, da es sich eher um gesellschaftliche=20
> Phaenomene handet, als um technische Probleme.

Hi,

das sehe ich ähnlich wie Christian.
Nur, weil du den Kram in einzelne Records aufteilst, ist das noch keine=20
Taxonomie. Du musst den folgenden Usern auch keine Combobox anbieten,=20
das war nur ein Weg, wie man es machen würde, wenn man da taxonomisch=20
vorgehen möchte.
Eine Regular Expression ist nicht sinnvoll an dieser Stelle.

Welche konkreten Bedenken hast du?
Was spricht deiner Meinung nach für eine RegExp und gegen eine=20
Normalisierung?

Was du vielleicht noch überlegen könntest, wäre eine FULLTEXT INDEX=



PS: Sind meine Umlaute kaputt oder deine?
--=20
HTH,
Fabian

Re: partieller Feldervergleich

am 14.06.2006 10:56:55 von Christian Kirsch

Fabian Schladitz schrieb:
> Erhard Rainer schrieb:
....
>
> PS: Sind meine Umlaute kaputt oder deine?

Seine. Kein Content-Type-Header.
Aber
X-News-Agent: XNews.
Die Werbung klappt immerhin.