Pezibär: Mysql/SQL Wildcard bei Spaltenamen

hallo
Gibt es eigentlich eine Möglich mit einem (Wildcard/RexEXP Muster) die Spalten für einen View zu begrenzen.

A la "Select table1.s_* from " ... mir gehts um die "s_*" Geschichte. Das table1.* geht is mir klar .. aber kann man das nicht weiter filtern? Irgendwie
find ich nix dazu.

Geht so etwas überhaupt?

lg Peter

  1. Moin Moin!

    A la "Select table1.s_* from " ... mir gehts um die "s_*" Geschichte. Das table1.* geht is mir klar .. aber kann man das nicht weiter filtern? Irgendwie
    find ich nix dazu.

    Weil das niemand implementiert hat. Wenn Du sowas brauchst, stimmt etwas mit Deinem Datenbankschema nicht (Stichwort Normalisierung).

    Geht so etwas überhaupt?

    Nein, weil man es mit einem normalisierten Schema nicht braucht.

    Du könntest höchstens in einer darüber liegenden Lage Klopapier ("Wrapper") die Meta-Daten der View bzw. Tabelle holen, über deren Spaltennamen matchen, und daraus ein "SELECT table1.s_bla, table1.s_fasel, table1.s_laber, ..." basteln. Das ändert -- wie Klopapier auch -- aber nichts am Gestank des darunter liegenden Häufchens.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Moin Moin!

      »» A la "Select table1.s_* from " ... mir gehts um die "s_*" Geschichte. Das table1.* geht is mir klar .. aber kann man das nicht weiter filtern? Irgendwie
      »» find ich nix dazu.

      Weil das niemand implementiert hat. Wenn Du sowas brauchst, stimmt etwas mit Deinem Datenbankschema nicht (Stichwort Normalisierung).

      Ich sag nur .. Kreuztabellen und Views, die dann mit verschieden Benutzerechten belegt werden. Da bräuchte man dies bei aller liebe zu Normalisierung schon hin und wieder wie die "Amen in Gebet".;)

      Wenn jetzt einer kommt und sagt das soll man Programmtechnisch und nicht über die Datenbank lösen ist das eine Nette Idee. Aber 1.200.000 Datensätze welche über 7 Tables gekreuzt werden in 0,3 sec auszuwerten soll mir mal einer zeigen, wie das nur ansatz weiße so schnell geht ;)

      lg Peter

      1. echo $begrüßung;

        » » A la "Select table1.s_* from " ... mir gehts um die "s_*" Geschichte. Das table1.* geht is mir klar .. aber kann man das nicht weiter filtern? Irgendwie find ich nix dazu.

        Nun, MySQL hat nicht direkt ein eval(). Aber es gibt PREPARE, dem kann man einen String, der sich auch in einer User-Variable befinden kann, übergeben. Mit einer Stored Procedure, die die Metadaten der Tabelle(n) ausliest und eine Abfrage als String zusammenbaut, könnte man da vielleicht was basteln.

        Ich sag nur .. Kreuztabellen und Views, die dann mit verschieden Benutzerechten belegt werden. Da bräuchte man dies bei aller liebe zu Normalisierung schon hin und wieder wie die "Amen in Gebet".;)

        Wenn du das eigentliche Problem schildertest, könnte dir vielleicht ein Datenbankkundigerer etwas vorschlagen.

        echo "$verabschiedung $name";