Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Spalten mit bestimmten Namensanfang abfragen

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    219

    Spalten mit bestimmten Namensanfang abfragen

    Hallo,

    ich habe in SQL eine Tabelle die ungefähr folgend Spalten hat.

    tabelle

    auto_a
    auto_b
    auto_c
    haus_a
    haus_c
    haus_v

    Ich möchte jetzt gerne alle Spalten abfragen, deren Name mit "auto_" begint, ich kriege es leider nicht hin
    Ich bin bisher auf column_name gestoßen, aber das klappt leider nicht.

    Code:
    select * from tabelle where column_name like 'auto_%'
    Hat jemand eine Idee, wie das aussehen müsste?

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    das ist ganz einfach:


    select auto_a,auto_b,auto_c from tabelle

    da hättest auch selber drauf kommen können

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    219
    Da wäre ich auch selber drauf gekommen.
    Die Tabelle war nur ein Beispiel und die auf die ich das anwenden will ist deutlich größer und die einzelnen Spaltentypen haben nicht immer die gleich Anzahl.

    Ich würde die Abfrage daher gerne so aufbauen, dass man die einzelnen Spalten nicht einzeln eintippen muss.

    Wenn ich in obige Tabelle auto_d,auto_e,auto_f einbaue, dann soll die Abfrage das auch mit einbeziehen ohne das die Spalten einzeln hinzugefügt werden muss..

  4. #4
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Direkt in SQL scheints nicht zu gehen (http://forums.mysql.com/read.php?101...8363#msg-88363) aber so würds funktionieren (Bsp-Code in PHP):

    PHP-Code:
    // ...

    // find column names
    $q mysql_query("select column_name from information_schema.columns where column_name like 'auto_%' and table_name='tabelle';");
    // build real query
    $query "select ";
    // loop over column names and append
    while($row=mysql_fetch_array($q)) {
           
    $query .= $row ", ";
    }
    // strip last comma
    $query substr($query0, -2);
    // finish real query
    $query .= " FROM tabelle;";

    // execute real query and process results
    $q mysql_query($query);
    while(
    $row mysql_fetch_array($q)) {
        
    print_r($row);

    edit: habs nicht ausprobiert...
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  5. #5
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    219
    Viel Dank für die Mühe schau ich mir morgen mal in Ruhe an. Komisch, dass sowas nicht klappt.

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von swizz Beitrag anzeigen
    Viel Dank für die Mühe schau ich mir morgen mal in Ruhe an. Komisch, dass sowas nicht klappt.
    Weil SQL eine der wenigen Sprachen ist die zu 100% Mengen-Orientiert sind. Eine Imperative Speicherbelegung von Feld Zuweisungen daher leider nicht funktionieren.
    http://de.wikipedia.org/wiki/Deklarative_Programmierung
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  7. #7
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881
    Beschäftige dich mal mit systemtabellen. Leider hast du dich nicht darüber ausgelassen, mit welchem Datenbanksystem du arbeitest. In der Regel ist der Aufbau deiner Tabellen inkl. Spaltennamen in ebendiesen Systemtabellen gespeichert. Diese lassen sich mit SQL abfragen.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  8. #8
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    219
    Danke für den Tip. Ich habe bisher einfach nur ein bisschen mit SQL-Befehlen rumgespielt, die ich aus einem Uniskript hatte. Ich werde mir jetzt erstmal ein Buch mit ein paar Grundlagen besorgen, bevor ich hier weiter nerve .

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.11.2011
    Beiträge
    2
    Zitat Zitat von swizz Beitrag anzeigen
    Spalten mit bestimmten Namensanfang abfragen
    Genau vor dem Problem stand ich seiner Zeit auch und kam zu keiner Lösung weil MySQL das ja so nicht kann. Es ist eigentlich eine Funktion die ja so nicht wirklich sinnig ist, da man seine Datenbank ja kennen sollte. Aber es gibt momente bei der Entwicklung wo man einfach dynamischer Arbeiten kann wenn man sich die Spaltenbezeichnungen sozusagen durch Platzhalter selektieren könnte

    zitat von jeebee
    PHP-Code:
    // find column names
    $q mysql_query("select column_name from information_schema.columns where column_name like 'auto_%' and table_name='tabelle';");
    // build real query
    $query "select ";
    // loop over column names and append
    while($row=mysql_fetch_array($q)) {
           
    $query .= $row ", ";
    }
    // strip last comma
    $query substr($query0, -2);
    // finish real query
    $query .= " FROM tabelle;";

    // execute real query and process results
    $q mysql_query($query);
    while(
    $row mysql_fetch_array($q)) {
        
    print_r($row);

    Hätte ich das mal früher gehabt. die Idee ist richtig gut und nebenbei ists ja wirklich nur ein kleiner Schnipsel. Das kommt direkt in meine Wissensdatenbank, danke dir!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •