SQL mehrere Zeilen in eine

OP #4920019
Lesenswert?

Hallo zusammen

Folgende Ausgangslage (MySQL Tabellen):

A: [ID]  ProduktID
    1    ABC123
    2    ABC856


B: [ID]  PartID  Wert   NameID
    1    1       39.50  1
    2    1       blau   2


C: [ID]  Name
    1    Preis
    2    Farbe
    3    Grösse


A ist die Haupttabelle. B is eine Tabelle mit Parametern und C ist eine 
Verkünpfung mit Parameternamen.


Ich möchte nun daraus einen View machen der in etwa so aussieht:

View: ProduktID  Farbe  Preis
      ABC123     blau   39.50
      ABC856     <leer> <leer>

Besonderheiten: im view, sollten die Spaltennamen dynamisch mit dem Wert 
aus der Tabelle C beschriftet werden.

Die an ein Produkt angehängten Parameter sollen wenn möglich dynamisch 
hinzu bzw. entfernt werden können. Damit meine ich, dass die View immer 
so viele Spalten, welche ja den Parametern entsprechen, darstellt wie 
möglich.

Die Frage ist, wie macht man sowas?
Ich hoffe ich habe den Zusammenhang gut genug beschrieben.


Danke schonmal
Gast #4920037
Lesenswert?

Im Prizo geht das schon, aber du lagerst dann sehr, sehr viel Logik in 
die DB aus. Vor allem ist das Logik die da gar nicht wirklich passt und 
man die DB schon sehr verbiegen muss, damit das klappt.

Warum packst du sowas nicht in deine Anwendung statt die arme DB?
Gast #4920069
Lesenswert?

dein problem ist die strukturierung der daten.

die daten müssen in ein modell verpackt werden, welches dem relationalen 
modell entspricht. was du vorhast ist gegen die regeln.

es ist aber machbar wenn man umstrukturiert. da bräuchte ich zumindest 
ein paar mehr beispiele wie es am ende aussehen soll.
views dienen eigentlich nur der sicherheit. jeder betrachter bekommt 
seine view entsprechend seiner befugnisse.
Gast #4920073
Lesenswert?

Dr. Google schrieb:
> views dienen eigentlich nur der sicherheit. jeder betrachter bekommt
> seine view entsprechend seiner befugnisse.

nein, sie können für viel mehr verwendet werden. Wenn man an mehren 
stellen immer die gleichen joins verwenden und auch noch Logik bei der 
Spaltenberechnung hat, kann man das sehr schön in einen View auslagern. 
Dazu kommt noch die Optimierung das es auch Idizierte-Views gibt.
Gast #4920090
Lesenswert?

Peter II schrieb:
>views... nein, sie können für viel mehr verwendet werden.

natürlich ist das möglich, es gibt aber keinen unterschied zu einem join

also ich habe den fragesteller schon verstanden, ich will ihn nur nicht 
verstehen...

es geht darum die tabellenüberschrift dynamisch anzuzeigen. wenn man die 
aber weglassen würde und sie irgendwie anders ausgibt.
Gast #4920220
Lesenswert?

so viel ich davon verstanden habe ist es grundsätzlich möglich. es soll 
leute geben, die das mathematisch beweisen können.

schlimmstenfalls braucht man zu dem zweck einen oder mehrere künstliche 
schlüssel. die entwicklungsleistung soll man nicht unterschätzen, dafür 
läuft es aber dann maximal schnell.
#4920315
Lesenswert?

@Stefan: Hilft nicht, dann muss er ja jedesmal wenn ein neuer Parameter 
(z.B. "Gewicht") dazukommt, eine neue Tabelle anlegen und die View/Query 
anpassen.

Der TE will aber, wenn ich es richtig deute, dass, sobald das erste 
Produkt mit einem "Gewicht" versehen ist, dieses automatisch, ohne 
weitere DDL-Befehle, als neue Spalte in seiner View auftaucht.

Wenn eine Lösung mit DDL erlaubt wäre, dann
"alter table ... add column gewicht..."
aber sowas wäre ja viel zu einfach und normal.

@Holger:
Mal überlegt, einfach ein JSON/Array/XML/.. Zusatzdatenfeld im Produkt 
anzulegen, und diese produkt(gruppen)spezifischen Werte darin 
auszulagern?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren