Announcement

Collapse
No announcement yet.

Mysql View mit virtueller Spalte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mysql View mit virtueller Spalte

    Hallo !

    Ich habe eine Tabelle 'programme'.
    In dieser Tabelle habe ich die Spalten 'programmname' und 'programmbeschreibung'.
    In dieser Tabelle existiert kein Indexspalte :-( !

    ____________________________________
    | programmname | programmbeschreibung |
    ____________________________________
    | Programm A | aaaa aaaa aaa aaaa |
    _____________________________________
    | Programm B | bbbbbb bbbbbb bbbbbb |
    _____________________________________

    Für diese Tabelle habe ich eine View erstellt.
    In dieser View soll ich aus irgendwelchen Gründen
    eine Nummernspalte erstellen. Irgendwie müsste es
    mittels einer Variable möglich sein eine virtuelle Spalte zu erstellen.

    Folgendes Experiment zeigte keinen Erfolg.

    DELIMITER $$

    @zaehler = 0$$

    CREATE VIEW `programme_test` AS
    SELECT
    @zaehler := @zaehler + 1,
    `tbl_programme`.`programmname`,
    `tbl_programme`.`programmbeschreibung`,
    FROM `programme`

    DELIMITER ;

    Ist solch eine Idee überhaupt realisierbar ?
    Wer kann mit einer Idee weiter helfen ?

    Mit freundlichen Grüßen

    Stephan

  • #2
    Da das nix mit PHP zu tun hat, habe ich das mal in den MySQL Thread verschoben
    Christian

    Comment


    • #3
      Originally posted by Stephan123 View Post
      In dieser Tabelle existiert kein Indexspalte :-( !
      Du meinst wahrscheinlich Primärschlüssel?
      Ein Index kann auf einer beliebigen Spalte liegen und hat keine Auswirkung auf die Funktion. Er dient dem beschleunigten Datenzugriff.

      Originally posted by Stephan123 View Post
      In dieser View soll ich aus irgendwelchen Gründen eine Nummernspalte erstellen.
      Nur zu faul zum schreiben oder nicht verstanden warum? Das Ziel für die passende Lösung zu kennen, ist oft bedeutsam.

      Originally posted by Stephan123 View Post
      Irgendwie müsste es
      mittels einer Variable möglich sein eine virtuelle Spalte zu erstellen.
      Ja, Variablen in mySQL sind eine schöne Sache.

      Originally posted by Stephan123 View Post
      Folgendes Experiment zeigte keinen Erfolg.
      Du warst aber nahe dran.

      Originally posted by Stephan123 View Post
      Ist solch eine Idee überhaupt realisierbar ?
      Wichtig ist die Initialisierung der Zählervariable innerhalb des Views selbst.
      Das geschieht über die künstliche Tabelle mit dem Alias r.

      [highlight=SQL]
      SELECT
      @zaehler := @zaehler + 1 AS zaehler,
      p.programmname,
      p.programmbeschreibung
      FROM
      programme p,
      (SELECT @zaehler := 0) r
      [/highlight]
      Gruß, defo

      Comment


      • #4
        Hallo !

        Danke für die Antwort. Irgendwie klemmt es noch bei mir.
        Kannst du dein Beispiel mal komplett übermitteln.
        Bei meinem Test bekomme ich die Fehlermeldung:

        Error Code: 1351
        View's SELECT contains a variable or parameter

        Mit freundlichen Grüßen,

        Stephan

        Comment


        • #5
          ähm.. tschuldigung ... was soll das bringen?

          Fällt mir echt nict wirklich was sinnvolles zu ein - was ist denn da jetzt eindeutig?

          Du willst doch sicher hinterher irgendwas damit anfangen.... warum z.b. dann keine Programm_ID als integer in die Tabelle packen PK drauf - und meinetwegen noch Programmname unique...


          Naja, ich find's eigenartig...

          Comment


          • #6
            Originally posted by Stephan123 View Post
            Error Code: 1351
            View's SELECT contains a variable or parameter
            Das ist wohl so wie es die Fehlermeldung sagt. Da hab ich gepennt. Als View geht es offenbar nicht.

            Nutzen:
            Da Du nichts weiter zum Sinn der Veranstaltung schreibst, kann ich auch nichts dazu sagen außer, dass das Beispiel SQL in jeder Anwendung funktionieren sollte, auch in PHP. Taugt eben nur nicht für einen View.

            Nutzen 2:
            Ich verwende sowas, um ausgehend von der generierten Nummerierung Statistiken zu bauen, als Primärschlüssel taugt es natürlich nicht (außer vielleicht zur Generierung der Werte, aber dafür braucht man wohl keinen View)
            Gruß, defo

            Comment

            Working...
            X