Mailinglisten-Archive |
Hallo Anne, > kann ich in einem Datenbankfeld (mysql), das als key in einer Tabelle > auf einen primary key einer anderen Tabelle verweist mehrere variablen > (Indexnummern) speichern und in Form eines arrays verarbeiten bzw. > abfragen??? > > hm, ich hoffe das ist deutlich genug oder auch verstaendlich gefragt :-) Ich habe es zugegebenermassen zweimal lesen müssen - aber das will nix heissen... ;-) Wenn ich Dich richtig verstanden habe, willst Du also bereits auf Datenbankebene ein SELECT auf Deine Adressen-Tabelle Dir bereits alle IDs (=Keys) der damit verknüpften Tabelle sozusagen "auf dem Tablett" zur Verarbeitung in einem Array liefert, damit Du diese "verbundenen" Datensätze widerum SELECTen / weiterverarbeiten kannst... Kurze Antwort: Das geht nicht. (Zumindest nicht so) Grund: Wie Du vielleicht schonmal gehört/gelesen hast, speichert eine relationale Datenbank die Daten von Feldern einer Tabelle als sog. "skalare Werte" ab. D.h.: Ein Wert in einem Feld ist halt auch einfach EIN Wert - ganz gleich ob da nun ein, zwei, oder hundert IDs drin stehen. (D.h. für die Datenbank macht es erstmal keinen Unterschied ob da "4711" oder "4711 1234 5678" drin steht). So weit, so gut. (Sorry falls ich damit etwas erklärt haben sollte was Dir eh schon klar war.) Folgende Möglichkeiten hast Du: 1.) Wenn Du die Elemente in Deinen "Mehrfachfelder" immer konsequent mit ein und demselben "Trenner" (z.B. Komma oder Space) getrennt hast, kannst Du die mit PHP natürlich wieder aufsplitten. Z.B. mit "explode" ("split" ginge auch): $Mein_Array = explode(" ", $Feld_Aus_DB); Damit hättest Du dann Dein Array (falls die IDs mit Blanks voneinander getrennt sind). Falls Dir das bereits weiterhilft, brauchst Du jetzt eigentlich nicht mehr weiterlesen... ;-) 2.) Du nimmst eine andere Datenbank als MySQL, die sowas bereits kann. Das müsste dann eine objektorientiere oder eine objektrelationale sein. ( Die erlauben Dir die Definition bzw. Verwendung von neuen Datentypen, die auch "nicht-skalare Werte" verarbeiten können. Mit z.B. Oracle8 oder auch Postgres müsste es gehen. Das ist jetzt allerdings etwas spekuliert - ich hab´s selbst noch nicht probiert. 3.) Was Du allerdings vermutlich machen willst/solltest, ist eine sog. "n:m"-Relation (in der Datenbank). (Sprich: Eine oder mehrere Deiner Adressen kann mit einer oder mehrerer WasAuchImmerInDerAnderenTabelleIst verknüpft sein. Denn so ist es letztendlich doch - oder hab ich das falsch verstanden?) Dazu brauchst Du dann eine zusätzliche "Hilfstabelle", über die diese Relation hergestellt wird. In Deinem Fall würde diese Hilfstabelle etwa so aussehen (ich gehe jetzt ab hier mal davon aus daß die Tabelle die bid als Key hat "irgendwas" heisst): CREATE TABLE adr_irgendwas ( fid int ..., bid int ... ... ); Das allein nutzt ohne den richtigen Select noch nix. Also: SELECT * from Adressen, irgendwas, adr_irgendwas WHERE Adressen.fid = adr_irgendwas.fid and adr_irgendwas.bid = irgendwas.bid; Das Selected Dir dann die sämtliche Felder aus der Adressentabelle und die dazugehörigen "mehrfach-verknüpften" Felder aus der "irgendwas"-Tabelle (und das ganz ohne Array...). Das ganze war jetzt gleichermaßen aus dem Kopf und aus dem stegreif (Stegreif?), also nicht wundern wenn mir vielleicht irgend ein kleiner Feler unterlaufen ist. ;-) So, jetzt habe ich Dich womöglich vollends verwirrt und/oder völlig an Deinem Anliegen "vorbeierklärt". Vielleicht hilft´s aber auch ein bisschen... CU, Manuel -- Quote of the month: "When I went outside, it was raining. But Microsoft told me it wasn´t raining, so I didn´t get wet." (Ann-Marie Squeo, Reporter)
php::bar PHP Wiki - Listenarchive