Erstellung einer "Schattentabelle"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Erstellung einer "Schattentabelle"

    Hallöchen.
    Leider bin ich gezwungen eine "Schattentabelle" (ein anderer Name ist mir nicht eingefallen) zu erstellen, da eine Forums-Programmierung (PHP-Fusion) es Sonderzeichen in einem User-Namen nicht zuläss.

    Die originale Tabelle user (vereinfacht):
    || user-id || user_name || user_pass ||
    || 1 || karl || ich ||
    || 2 || willi || er ||
    || 3 || totti || muss ||

    nun habe ich einen User mit dem eigtl. Namen: |<totti>| (id 3)

    Da ich aber user_id und user_pass in einer anderen Anwendung brauche (mit eigtl. Namen), dachte ich mir eine "Schattentabelle" anzulegen:

    Schatten-Tabelle:
    || user-id || user_nick ||
    || 1 || ||
    || 2 || ||
    || 3 || |<totti>| ||

    Also wenn es keine Sonderzeichen in user_name gibt, bleibt das Feld user_nick leer. Ansonsten (siehe ID 3 ) schreibe ich in die Schattentabelle halt den eigtl. Namen rein.

    So könnte ich über ID das richtige Passwort ermitteln und den user_nick in meiner anderen Anwendung ausgeben.

    Nun stellen sich mir 2 Probleme:
    1. Wie mache ich die SQL-Abfrage wenn user_nick=leer dann nehme user_name, sonst nehme user_nick ??

    2. Wie halte ich die "Schattentabelle" mit den ID,s aktuell, da ja die Tabelle user eigentlch imm aktualisiert wird.

  • #2
    Ist zwar schon alt, aber immer noch unbeantwortet.

    Ich würde in deiner Schattentabelle nur dann eine Zeile erstellen wenn auch eine notwendig ist. In deinem Beispiel bei id=3

    1) Mit IFNULL() und einem JOIN
    Code:
    SELECT
        u.user_id,
        IFNULL(su.user_nick, u.user_name) AS user_name
    FROM
        user AS u
        LEFT JOIN shadow_user AS su
        ON u.user_id = su.user_id
    Zu 2) Mittels eines Triggers auf der user-Tabelle
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)

    Kommentar


    • #3
      Hallöchen Yaslaw.
      vielen Dank das du dich meiner Frage angenommen hast

      Deine Lösung funktioniert suppi

      Der Hinweis auf TRIGGER von dir, ist auch Klasse.
      Da muss ich mich noch einarbeiten, da auf der Haupttabelle ja UPDATE und INSERT erfolgen kann, mus ich wohl 2 TRIGGER setzen?
      Mal schaun wie ich das mache.

      Achja,
      du erwähntest in deiner Antwort, das man nur dann eine Zeile erstellen soll wenn auch eine notwendig ist.
      Leider brauche ich alle ID,s / Namen aus der Hauptabelle, da ich in der "Schatten-Tabelle" noch weitere Daten zu den ID,s abspeichern muss,
      da ich diese in den anderen Anwendungen benötige.

      Nochmals Dank an dich für deine Hilfe

      Kommentar

      Lädt...
      X