Gerold Buchheim: Wie Datenababfrage (mySQL)

Hallo,

ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
 "select *(not Spalte3, not Spalte4) from TABLE ..."

Leider geht es so nicht ;-(

Auch eine "Positivabfrage" im Sinne von
  "select Spalte1, Spalte2, Spalte5, Spalte6, Spalte7 from TABLE ..."
hilft mir nicht weiter, da die Spalten teilweise dynamisch erstellt wurden, und zum Zeitpunkt der Erstellung des Skriptes nicht bekannt sind.

Für Ideen einer "Negativabfrage" bin ich dankbar.

Viele Grüße
Gerold

  1. Hi,

    probier's doch mal mit:
    SELECT * FROM tabelle WHERE !spalte1 and !spalte2 and ...

    Müsst eigentlich klappen.

    Gruss
    Lemmy
    http://www.olison.com

    1. Hallo.

      SELECT * FROM tabelle WHERE !spalte1 and !spalte2 and ...

      Würde das nicht bedeuten, dass spalte1 und -2 einfach keinen Wert haben darf? Die Aufgabenstellung setzt das aber nicht voraus, nun, dass die beiden Spalten nicht im Result vorkommen.

      Grüße aus Würzburg
      Julian

    2. Hi,

      probier's doch mal mit:
      SELECT * FROM tabelle WHERE !spalte1 and !spalte2 and ...

      Müsst eigentlich klappen.

      Nee, leider nicht. Die Inhalte der betreffenden Spalten werden dennoch ermittelt ;-(

      Trotzdem Danke.

      Viele Grüße
      Gerold Buchheim

  2. Hallo,

    ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
    "select *(not Spalte3, not Spalte4) from TABLE ..."

    glaub zwar nicht, dass es das ist was Du willst, aber Du könntest zwar die ganze Tabelle abfragen, aber dann bei der Ausgabe die beiden Spalten weglassen. Also z.B. so:

    for(...){
      if(spalte!=Spalte3 AND spalte!=Spalte4)
      Ausgabe der übrigen Spalten
    }

    Gruss Alexa

    1. Hallo,

      ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
      "select *(not Spalte3, not Spalte4) from TABLE ..."

      glaub zwar nicht, dass es das ist was Du willst, aber Du könntest zwar die ganze Tabelle abfragen, aber dann bei der Ausgabe die beiden Spalten weglassen. Also z.B. so:

      for(...){
        if(spalte!=Spalte3 AND spalte!=Spalte4)
        Ausgabe der übrigen Spalten
      }

      Ja, in dieser Systematik habe ich das Problem gelöst. Nicht sonderlich elegant, (was mich ein wenig stört) aber egal.

      Viele Grüße
      Gerold Buchheim

      Gruss Alexa

  3. Hi

    ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
    "select *(not Spalte3, not Spalte4) from TABLE ..."

    warum?
    bydey

    1. Hi

      ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
      "select *(not Spalte3, not Spalte4) from TABLE ..."

      warum?

      In den einzelnen Spalten der Tabelle werden Produkteigenschaften beschrieben. (Breite, Höhe, Gewicht, Farbe, Artikel-Nr. usw.) Zugansberechtige Administratoren haben nun Mittels enes einfachen selbstgestrickten Interfaces die Möglichkeit, zusätzliche Spalten mit weiteren Eigenschaften anzulegen. Natürlich können diese Spalten auch wieder gelöscht werden.

      Dem "normalen" Betrachter am Bildschirm sollen (fast) alle diese Kategorien angezeigt werden. "Fast" deshalb, weil zwei Kategorien (Spalten) einem bestimmten Nutzerkreis vorbehalten ist(Member-Area).

      Biele Grüße

      bydey

  4. Hi Gerold,

    Auch eine "Positivabfrage" im Sinne von
      "select Spalte1, Spalte2, Spalte5, Spalte6, Spalte7
    from TABLE ..."
    hilft mir nicht weiter, da die Spalten teilweise
    dynamisch erstellt wurden, und zum Zeitpunkt der
    Erstellung des Skriptes nicht bekannt sind.

    aber zum Zeitpunkt der Ausführung des Skriptes sind
    sie bekannt - und via DESCRIBE abfragbar. Also:

    1. Sende ein DESCRIBE für die Tabelle an mySQL.
    2. Analysiere die Antwort und generiere die SELECT-
       Liste daraus.
    3. Sende das eigentliche SELECT an mySQL.

    Für Deine Aufgabenstellung, alle bis auf zwei Spalten
    auszugeben, ist das allerdings oversized - da ist
    SELECT * und Ausblenden in Deiner CGI-Sprache völlig
    ausreichend.

    Das Problem an sich hat aber seinen Reiz - nämlich
    dann, wenn die auszublendenden Spalten _sehr_ viel
    größer sind als die übrigen. Dann wird es nämlich
    eine Performance-Frage, _nicht_ alle Daten zu holen.

    Viele Grüße
          Michael