view und real table in einem?
steffi
- datenbank
moin.
bin grad dabei eine tabelle umzustrukturieren.
bisher war es so, dass alles in einer tabelle war:
ID, Kategorie, Content
Nun soll es so gemacht werden, dass eine tabelle die kategorie und eine Kategorie-ID beinhaltet.
In der zweiten tabelle, soll, ID, Content und Kategorie-ID (also ein querverweis) zu finden sein.
nun habe ich die frage, ob es auch möglich ist, dass in der 2.tabelle auch, wie bei einer view tabelle automatisch in einem "virtuellen" feld die kategorie abgefragt werden kann?
also dass zwar nur ID, Content und Kategorie-ID abgefragt werden, aber zugleich in einem select query bequem die kategorie abgefragt und verwendet werden kann. hierfür bietet Kategorie-ID ja die nötigen infos, also könnte ich mir vorstellen, dass es geht...
danke für tipps
Hi,
also ich sehe das richtig, in der Datenbank hast du faktisch zwei sauber getrennte Tabellen, die über einen Foreign-Key verbunden sind. Für eine Abfrage suchst du nun eine Möglichkeit gewissermaßen den Ausgangszustand wiederherzustellen?
Nichts leichter als das, das Stichwort lautet Join:
Einführung
Fortgeschrittene Techniken
MfG
Rouven
Hi,
Nichts leichter als das, das Stichwort lautet Join:
ich vergaß zu erwähnen: es geht mir darum, dass, wenn möglich nur das db design, und nicht die scripte geändert werden müssen...
also wüsste ich gern, ob es eine methode gibt, die tabelle selbst zu verknüpfen und nicht erst im query zu "joinen"...
Hi,
also wüsste ich gern, ob es eine methode gibt, die tabelle selbst zu verknüpfen und nicht erst im query zu "joinen"...
nur die über einen View, aber einen View genau so zu benennen wie eine Tabelle geht nur bei unterschiedlichen Qualifiern/Creatorn, sofern sowas vom DBMS unterstützt wird (IIRC nicht bei MySQL). Also müsstest du z.B. die Tabelle umbenennen, den View mithilfe des Joins aufsetzen und unter dem Namen der alten Tabelle festhalten. Damit würde sich für sämtliche Skripte nichts ändern, nur die Datenstruktur dahinter wäre sauber.
MfG
Rouven
"den View mithilfe des Joins aufsetzen"
was meinst Du damit?
ist das nicht doch wieder eine veränderung des queries?
ist dadurch einfach sowas möglich SELECT kategorie, content FROM test WHERE kategorie="testkategorie"
also im hintergrund soll eben das ganze über die ID gemanagt werden, auch wenn in den queries immer von der kategorie selbst die rede ist...
Ein View ist ja nichts anderes als eine "Tabelle" (<- also ein Konstrukt unter festem Namen), das auf einer SQL-Abfrage basiert.
Es ist demnach kein Problem ein
CREATE VIEW mein_view
AS
SELECT id, content, kategorie
FROM tabelle1 INNER JOIN tabelle2
ON tabelle1.kategorie_id = tabelle2.kategorie_id
-> Ein SELECT * FROM mein_view ergibt demnach:
id | content | kategorie
------------------------
<Daten>
MfG
Rouven