xpfreund: /PHP alle Tabellen, welche Spalte "x" enthalten, auslesen

Hallo,

Ich habe einen Update-Befehl, der nur dann ausgeführt werden soll, wenn die zu updatende Spalte in der Tabelle vorhanden und leer ist. D. h. ich benötige eine Abfrage, die mir alle Tabellen ausgibt, welche die Spalte "x" enthalten. Dann muss ich in der Tabelle abfragen, ob Spalte "x" beim jeweiligen Datensatz leer ist und kann dann die Update-Anweisung starten. Mein Ansatz war: Alle Tabellen auslesen, dann deren Spalten und als Letztes die jeweiligen IDs. Das ist mir aber zu aufwändig. Gibt es vielleicht eine MySql-Abfrage, die mir ein Array aller Tabellen liefert, welche die Spalte "x" enthalten?

gruß aus Senftenberg am See

  1. Hi,

    D. h. ich benötige eine Abfrage, die mir alle Tabellen ausgibt, welche die Spalte "x" enthalten.

    was für ein Use-Case soll das denn sein? Die Tabellen, die zur Veränderung herangezogen werden müssen, haben demjenigen, der sie durchführt, vollständig bekannt zu sein. Allein aus dem Namen einer Spalte schließen zu wollen, dass ein Update durchgeführt werden darf, ist ein extrem starkes Indiz für ein verdammt krankes DB-Layout.

    Mein Ansatz war: Alle Tabellen auslesen, dann deren Spalten und als Letztes die jeweiligen IDs. Das ist mir aber zu aufwändig.

    Natürlich. Was spricht gegen "alle Tabellen kennen, die aktualisiert werden sollen"?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      Du hast mich nicht ganz verstanden. Hier nochmal in Kurzform:
      -31 Tabellen
      -manche haben die Spalte "x", manche nicht
      -Update-Vorgang, den ich nicht antasten will, schreibt manchmal in die Spalte rein
      -Bei manchen Einträgen wird allerdings kein Wert in dieser Spalte geupdatet
      Deshalb muss eine Anweisung zustande kommen, die bei leerer Spalte "x" nachträglich einen Wert einträgt.

      gruß aus Senftenberg am See

  2. Hallo!

    Was für ein DBMS verwendest du?
    In MySQL gibts zumindest den Befehl

    show colums from [table name]

    Du könntest dir mit
    show tables
    alle Tabellen holen und dann mit show colums über alle Tabellen drüber gehen und schauen ob es die Spalte gibt.

    Aber ich würde auch so wie Cheatah eher meinen, dass du dein DB Layout nochmal überdenken solltest, wenn du solche Sachen öfters machen musst.

    Solche Vorhaben kann ich mir nur vorstellen, wenn ich mir Routineaufgaben wie automatische Updates oder so vereinfachen möchte.

    mfg
      frafu