Announcement

Collapse
No announcement yet.

Select-Abfrage über Spaltennummer

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

  • Select-Abfrage über Spaltennummer

    Hi!
    Bin neu hier und fange gleich mal mit einer spannenden Frage an
    Hoffe, ihr könnt mir weiterhelfen!

    Ich würde gerne wissen, ob es möglich ist, eine select-Abfrage nicht wie gewohnt mittels

    SELECT spalte1 FROM table,
    sondern mittels der Spaltennummer stattfinden zu lassen.

    Also sowas wie SELECT 1 FROM table (so geht's nicht, aber vielleicht ja was ähnliches )

    Als Anzeige dann natürlich die normalen Spaltennamen...

    Das hätte dann den Vorteil, dass die SQL-Statements gleich bleiben, auch wenn man im Nachhinein die Tabellenspalten umbenennt.
    So müsste man nicht ständig bei einem neuen Namen die Statements anpassen...

    Hoffe, das war jetzt nicht zu wirr
    test

  • #2
    Sorry, aber wenn du ständig die Feldnamen ändern musst, dann macht du grundlegend etwas falsch!
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Du kannst Dir eine "Standardtabelle" erstellen ,z.B. mit 3 Spalten,
      dann in der ersten Zeile, als ersten Datensatz (id=1) die Spaltennamen einfügen,
      dann ein passendes concat schreiben, welches die Spalten abruft.

      Code:
      drop table test3;
      create table test3(id int, sp1 varchar(40),sp2 varchar(40),sp3 varchar(40));
      insert into test3 values('1','Berge','Seen','Wege');
      insert into test3 values('2','Alpen','Königssee','Rodelbahn');
      insert into test3 values('3','Rothaargebirge','Biggesee','Rothaarweg ');
      select concat('select sp1 as ',sp1,', sp2 as ',sp2,', sp3 as ',sp3,' from test3 where id>1; ') as abfrage from test3 where id=1;


      Die "abfrage" kopieren und eingeben, sie präsentiert das gewünschte Ergebnis.

      Comment


      • #4
        ... da bin ich ganz bei dibo33 - zuerst denken dann programmieren. Spalten im Nachhinein umbenennen sollte man sich gar nicht erst angewöhnen.

        bye,
        Helmut

        Comment


        • #5
          Originally posted by dibo33
          Sorry, aber wenn du ständig die Feldnamen ändern musst, dann macht du grundlegend etwas falsch!

          Originally posted by hwoess View Post
          ... da bin ich ganz bei dibo33 - zuerst denken dann programmieren. Spalten im Nachhinein umbenennen sollte man sich gar nicht erst angewöhnen.

          bye,
          Helmut
          Irgendwie ist das nicht so recht die Antwort auf meine Frage... Meint ihr, mir macht's Spaß, Spalten umzubenennen? Wenn Chef nicht genau weiß, wie er die Spaltennamen nennen will, dann kann ich doch versuchen, lästige Tipparbeit zu vermeiden.

          @mtth: Super Idee! Danke!

          Edit: Habs jetzt jedoch anders realisiert (in Java): Ich hab mir in einem String[] die Spaltenüberschriften speichern lassen und rufe nun die Spalten über "a[i]" ab.
          Zuletzt editiert von Rokko_11; 04.01.2010, 03:03.
          test

          Comment


          • #6
            Rokko_11

            Schwieriger wird das ganze, wenn die Spaltentypen varieren.
            Dann muss man in die concat-Abfrage Bezeichner einsetzen
            z.B
            select concat('select sp1 as xx_',sp1,', sp2 as ',sp2,', sp3 as ',sp3,' from test3 where id>1; ') as abfrage from test3 where id=1;

            (Weil MYSQL Spalten nicht mit Zahlen benennen kann und viele weitere unerlaubte Begriffe bestehen. (Nachzulesen in der Dokumentation.))

            Comment


            • #7
              Originally posted by Rokko_11 View Post
              Irgendwie ist das nicht so recht die Antwort auf meine Frage... Meint ihr, mir macht's Spaß, Spalten umzubenennen? Wenn Chef nicht genau weiß, wie er die Spaltennamen nennen will, dann kann ich doch versuchen, lästige Tipparbeit zu vermeiden.
              Hallo,

              Dann bau dir doch eine View auf die Tabelle(n) und gib den Spalten Alias - Bezeichnungen, dann kannst du umbenennen nach Lust und Laune ?
              (Obwohl ich die Anforderung eher "Unfug" nennen würden, wen interessiert es denn, wie die Attribute in einer DB benannt sind ????

              Gruss

              Comment


              • #8
                Ich bin überzeugt, das Ding schiesst sich sowieso selber ins Knie, das macht doch keinen Sinn auf Verdacht so zu programmieren, weil vielleicht irgendwer irgendwann mal ein paar Spaltennamen ändern will. Erstens von der Laufzeit und zweitens von der Komplexität und Unlerserlichkeit, die damit entsteht. Wenn dann vielleicht mal 20 Programme und 50 stored procs (oder vielleicht hat Rokko_11 Glück und das gibt es in der verwendeten MySQL-Version noch gar nicht oder wird sicherheitshalber nicht benutzt) im Einsatz sind, die diese Spalten in verschiedensten Abfragen nutzen, dann Gute Nacht. Aber muss ja jeder selber herausfinden ...

                bye,
                Helmut

                Comment


                • #9
                  Originally posted by hwoess View Post
                  das macht doch keinen Sinn auf Verdacht so zu programmieren, weil vielleicht irgendwer irgendwann mal ein paar Spaltennamen ändern will.
                  Versteh' ich nicht.
                  Das ganze MYSQL- System beruht darauf, dass
                  irgendwer irgendwann mal ein paar Spaltennamen ändern will. .
                  Diese "Fehlerquelle" ist in MYSQL eingebaut.

                  Rokko sucht nichts weniger, als eine nützliche Anwendung von describe und show.
                  Da fehlts noch bei MYSQL.
                  Zuletzt editiert von mtth; 05.01.2010, 03:05.

                  Comment

                  Working...
                  X