Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

09.11.2004, 16:44

SELECCT - Zahlen trennen

... der Betreff ist wohl schwer zu verstehen. - Aber egal, hier mein Problem.

Ich habe eine Tabelle mit einem Feld namens H_KAT (Hauptkategorie)

Lasse ich den kompletten Zeileneintrag auslesen, wenn er nur einer H_KAT zugeordnet ist, ist alles in Ordnung.

Wie muß ich vorgehen, wenn ich diesen Zeileneintrag nun mehrere H_KAT´s zuordne?

Beispiel:

1. Zeile Name | H_KAT |
Herr Mustermann | 1 |

2. Zeile Name | H_KAT |
Herr Musterhausen | 1, 4, 14 |

Ich möchte nun, dass Herr Musterhausen in der Hauptkategorie 1, 4 und 14 auftaucht.

Mit folgender Abfrage funktioniert es nicht

PHP-Quelltext

1
SELECT FROM tabelle WHERE H_KAT LIKE '%$H_KAT%'

So zeigt er mir in der Kategorie 14 auch alle Einträge, die der Kategorie 4 zugeordnet sind und umgekehrt.

Ich habe vielleicht gerade ein Brett vor dem Kopf und hoffe auf eure Hilfe.
=====================================
+++ Wenn ich erstmal Groß bin, werde ich auch noch ein Profi +++
=====================================

2

09.11.2004, 17:30

Du könntest reguläre Ausdrücke nehmen, aber diese als auch Deine jetzige Form werden niemals richtig performant werden!

Für Gruppenzuordnungen verwendet man am besten extra Tabellen (user_id, group_id) und kann somit auch Mehrfacheinträge einfachst realisieren ...


Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

3

09.11.2004, 18:25

Die Spalte H_KAT gab es bis vor 2-3 Stunden noch nicht.
Da war mein Datenbank-Design auch noch in Ordnung.

Aber jetzt ist die Anforderung an meine Page gekommen, dass er auch nach Kategorien sortieren soll.

SHIT

Gibt´s denn da keine einfache Lösung?
Wie meinst Du denn das

Zitat

und kann somit auch Mehrfacheinträge einfachst realisieren ...

Vor allem "einfachst" ???
=====================================
+++ Wenn ich erstmal Groß bin, werde ich auch noch ein Profi +++
=====================================

4

09.11.2004, 18:44

bis MySQL 4.0:
SELECT user_id FROM kat WHERE kat_id='#' (kat_id==group_id, wie mans nennt is erstma egal)
foreach (Result): SELECT * FROM tabelle WHERE user_id='$result['user_id]'

Das wäre auch mit einem JOIN machbar, aber bei Joins braucht der Optimizer meist länger für die Suchstrategie, als die Abfrage dann dauert ... also bei häufiger Ausführung nicht empfehlenswert!

Ab MySQL 4.1:
SELECT * FROM tabelle WHERE user_id IN (SELECT user_id FROM kategorie WHERE kat_id='nummer')

Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

5

10.11.2004, 08:39

.
... mal ne andere Frage.

Jetzt habe ich ja das Problem, dass ich bei einer Mehrfachnennung
z.B. ein Eintrag soll in der Kategorie 1 und 12 angezeigt werden.

Wähle ich die Kategorie 12, werden auch alle Einträge der Kategorie 1 und 2
angezeigt.

= = = = = = = = = = = = = = = = = = =

Nun kam mir der Gedanke anstatt Zahlen -> Buchstaben zu nehmen.
Und da ich nur 16 Kategorien habe, würde nie ein Buchstabe doppelt vorkommen.

Liege ich da recht in der annahme?
=====================================
+++ Wenn ich erstmal Groß bin, werde ich auch noch ein Profi +++
=====================================

6

10.11.2004, 10:04

Das stimmt wohl, Buchstaben würden bei 16 Kategorien nicht doppelt vorkommen, allerdings löst das das Problem der unsauberen Tabellen nicht..

Richte Dir eine Tabelle Kategorie ein, in der dann nur die Paarungen Person_ID und Kategorie stehen. Taucht eine Person in mehreren Kategorien auf, dann steht er eben mehrmals in der Tabelle drin. Das läßt sich mit der Suche dann besser abfragen.

Mehrere Daten in ein Tabellen zufeld zu schreiben ist echt unsauber und sollte nicht gemacht werden!

Gruß
der chieps
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

7

10.11.2004, 13:46

... also die Umstellung mit den Buchstaben
hat mein Problem dann erstmal gelöst "vorerst"!

Ich weiß auch noch nicht, wie groß meine Tabelle wird
und werde dann wohl irgendwann nicht drumherum kommen
dafür ne neue Tabelle anzulegen.

Hauptsache ist derzeit, das diese Abfrage funzt.

-DANKE- bis hier her!

Gruß
MacroMax
=====================================
+++ Wenn ich erstmal Groß bin, werde ich auch noch ein Profi +++
=====================================

Thema bewerten