Announcement

Collapse
No announcement yet.

Spaltenausschluss ?

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

  • Spaltenausschluss ?

    Hallo SQL-Freaks<BR>
    <BR>
    Habe 21 Spalten in einer Tabelle. Eine Spalte möchte ich in meiner SQL-Abfrage nicht sehen.<BR>
    Kamm ich statt 20 Spalten zu Selektieren auch die eine Spalte, die ich nicht sehen möchte ausschließen ? Über irgendeine form von anweisung ?<BR>
    <BR>
    Eine Idee ?

  • #2
    Hallo Sascha,

    per SQL kenne ich keine Möglichkeit. Wenn es nur darum geht das eine Spalte in einem grid nicht angezeigt werden soll, dann kann man das in der entsprechenden Query-Komponente konfigurieren.

    Gruß

    Torste

    Comment


    • #3
      Folgender algorithmus:

      Mit

      SELECT * FROM <Tabelle> where 1 = 2

      bekommst Du alle Spalten.

      Damit baust Du dein Select zusammen indem du über alle zurückgelieferten Spalten gehst und die zu unterdrückte Spalte nicht mit aufnimmst

      Comment


      • #4
        Hallo Bernhard,

        wenn ich meine Select's dynamische generiere habe ich das bis vor kurzem auch so gemacht.

        Bei Firebird ist diese Vorgehensweise bei Tabellen mit vielen Datensätzen jedoch nicht zu empfehlen. Obwohl es keinen Sinn macht wird bei so einer Abfrage ein Full Table Scan durchgeführt, mit den entsprechenden zeitlichen Auswirkungen. Mit Interbase habe ich es nocht nicht probiert, denke aber das es da genauso ist.

        Gruß

        Torste

        Comment


        • #5
          Hallo,
          danke erst mal für eure Beiträge. Ich benötige schon eine Professionellere Lösung. Ich möchte endlich weg von den Column-Scans. Es müßte so etwas wie "SELECT * -Lauf_ID FROM Tablle" geben. Eine sogenannte Ausschluß-Klausel...<BR>
          <BR>
          habt Ihr noch weitere Ideen

          Comment


          • #6
            Hallo Torsten,

            ich verwende diese Methode bisher bei MS-SQL und Oracle ohne Performance-Probleme. Ich denke bei diesen Datenbanken ist der SQL-Parser intelligent genug keinen Full Table Scan durchzuführen.

            Eine andere Möglichkeit wäre natürlich die Beschreibung der Tabelle per SQL abzufragen.

            Bei MS-SQL fragt man die sysobjects nach der id der Tabelle ab und bestimmt die Spalten über die Tabelle syscolumns. So was müsste vom prinzip auch bei Firebird/Interbase möglich sei

            Comment


            • #7
              Hallo Bernhard,

              ich gehe mittlerweile den direkten Weg über die Systemtabellen. Diesen Weg habe ich aber erst gewählt nachdem mir diese Performancefalle aufgefallen ist.

              Gruß

              Torste

              Comment

              Working...
              X