phpbar.de logo

Mailinglisten-Archive

AW: AW: Dateninhalt bzw. dynamische Felder in MySQL

AW: AW: Dateninhalt bzw. dynamische Felder in MySQL

Andreas Müller mysql at universalware.de
Mit Dez 10 12:07:50 CET 2003


Hallo Stefan,

> Sorry aber dann würde mich interessieren wie du Abfragen gestaltest.
> Ich gehe jetzt mal davon aus, dass du ein Konzept hast, wie Tino es
> vorschlug und nicht etwas wo auch u.a. dynamische Felder vorkommen.
>
> Also z.B.
> SELECT from äh was denn nun also, ach ja in Tabelle nachsehen, in der
> die Feldnamen drinstehen
> ok
> WHERE ja was ist denn in dem Feld denn eigenltich drin?
> und wer benutzt es denn außer dem User der es angelegt hat.

naja eigentlich ist das ganz einfach :-)
Da ich ja meine Spalten habe kann ich diese auch nicht als Spalten abfragen.
Denn ich habe durch die dynamischen Felder nunmal n-Datensätze für die
Felder. Konkret sieht sowas dann z.B. so aus:

Table: address
-------------
- address_id
- name
- surname
- city
- ...


Table: address_dyn
------------------
- address_dyn_id
- address_id
- field_id
- value


Table: field
-------------
- field_id
- name
- datatyp


address - enthält eine Adresse mit deren immer gleichen Grundfeldern,
          wieviele das sind ist beliebig
field   - enthält alle "vordefinierten" möglichen dynamischen Felder,
          diese Tabelle ist innerhalb der Anwendung beliebig erweiterbar
          und gibt mit in einer aufgeräumten vor vor welche "dynamischen
Datentypen"
          die Anwendung kennt
address_dyn - enthält pro Adresse n Datensätze für die dynamischen Felder


Um an alle Daten einer Adresse heranzukommen macht man nun 2 selects:

select * from address where address_id=123	-> 1 Datensatz
select * from address_dyn where address_id=123	-> n Datensätze

Auch suchen kann man, entweder joint man sowas

select *
from address a
left join address_dyn b where a.address_id=b.address_id and b.field_id=[ID
Telefonnummernfeld]
where b.value='+49 1234 567890'

oder simpler (kommt halt auf die Anwendung an wie die es braucht):

select address_id
from address_dyn
where field_id=[ID Telefonnummernfeld] and value='+49 1234 567890'

-> und dann wie oben die Daten für diese IDs abholen und anzeigen

So das sollen nur mal paar kleine Denkanstöße sein. Machbar ist viel.
Manchmal trifft man auf Limitierungen z.B. joinbare Tabellenanzahl. Aber
sind dann schon recht komplexe Abfragen.

Gruß,
Andreas


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive