Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Neu und aufgeschmissen^^

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Rakeam, 10 August 2015.

  1. Rakeam

    Rakeam Neuer Benutzer

    Hallo liebe Community,

    ich bin ganz neu in der Datenbankwelt und jetzt schon total aufgeschmissen...

    Ich versuche mein Problem mal zu schildern:

    Parameter A ist mein Ursprung. Dieser soll mit einer Liste abgeglichen werden und sofern ich dort einen "Treffer" lande, zu B umgewandelt werden. Trifft die Abfrage nicht, soll es A bleiben. Nach dieser Abfrage soll eine weitere laufen, welche A (bzw. das nun geänderte B) in einer dritten Tabelle sucht und anschlißend alle dort gefundenen Treffer in eine Tabelle schreibt.

    Die Sache mit dem Join bekomme ich auf niedrigem Niveau hin, aber ich glaube das ich damit nicht weit komme^^ Bin ich mit einem Case-Statement auf der richtigen Spur, oder laufe ich gerade komplett in die falsche Richtung?

    Vielen Dank schonmal. Ich hoffe man versteht mich ;)

    Grüße
    Rakeam
     
  2. Distrilec

    Distrilec Datenbank-Guru

    Das einzige Verständnisproblem habe ich hier...
    Was meinst du damit?
    Du suchst in einer Tabelle nach einem Wert A und wenn du den findest willst du mit Wert B deine dritte Tabelle durchsuchen?
     
  3. Rakeam

    Rakeam Neuer Benutzer

    Ich habe Wert A, den suche ich in einer zweiten Tabelle (Mit den Werten A + B). Wenn A dann gefunden wird, soll mit dem passenden B weitergesucht werden. Wird A nicht gefunden, soll die Suche mit A weitergehen. Wird in der dritten Tabelle A (oder B) nicht gefunden, sind die Fälle quasi irrelevant (quasi, weil sie an anderer Stelle noch gebraucht werden).

    Es ist so:

    Ein Patient kommt ins KH. Dann bekommt er eine eindeutige Nummer zugewiesen. Wird er entlassen und wegen der selben Sache wieder aufgenommen, bekommt er wieder eine Nummer, gehört aber zum ersten Aufenthalt. Deshalb müssen diese beiden (Fall)Nummern zusammengeführt werden. Das Ergebnis daraus muss ich mit einer dritten Tabelle abgleichen, ob ich diese Fälle überhaupt verwenden kann (passendes Quartal, passende Station usw.)
     
  4. Distrilec

    Distrilec Datenbank-Guru

    Dann ist dein Modell müll...
    Richtig wäre eine eindeutige ID pro Person und der sind dann die ganzen Fälle zugeordnet... Damit du dann alle Fälle für eine bestimmte Person finden kannst...

    Da das Modell aber vorgegeben ist, bräuchte ich ein paar Tabellendefinitionen um das Statement richtig aufzubauen :)
     
  5. ukulele

    ukulele Datenbank-Guru

    Also mal abgesehen davon das das sehr abenteuerlich klingt, das Modell wirklich nicht richtig erscheint und du an verschiedenen Stellen in Probleme laufen wirst hier erstmal ein Versuch:
    Code:
     SELECT    *
    FROM    dritter_tabeller
    WHERE    zu_durchsuchende_spalte = (
    SELECT    isnull(wert_B,@variable_wert_A) AS wert_B_oder_A
    FROM    zweite_tabelle
    WHERE    wert_A = @variable_wert_A
    LIMIT 1
    )
     
  6. Distrilec

    Distrilec Datenbank-Guru

    Das wird nicht funktionieren... Es sei denn Limit generiert hier eine Zeile, wenn keine Übereinstimmung gefunden wurde...
     
  7. ukulele

    ukulele Datenbank-Guru

    Ok hast recht, dann müsste man mit EXISTS arbeiten:

    Code:
    SELECT    *
    FROM    dritter_tabeller
    WHERE    zu_durchsuchende_spalte = (
    
    SELECT    wert_B AS wert_B_oder_A
    FROM    zweite_tabelle
    WHERE    wert_A = @variable_wert_A
    LIMIT 1
    UNION ALL
    SELECT    @variable_wert_A AS wert_B_oder_A
    WHERE NOT EXISTS (    SELECT    1
                        FROM    zweite_tabelle
                        WHERE    wert_A = @variable_wert_A )
    
    )
     
  8. Rakeam

    Rakeam Neuer Benutzer

    Hallo und vielen Dank für die Antworten! Ich hatte etwas viel zu tun und konnte deshalb nicht rein schauen :/

    Kurz zum Modell: Ich bekomme die Daten so von den Häusern. Dieser Schritt ist notwendig, um eine eindeutige ID herzustellen. Sobald die Abfrage durch ist, ist die letzte Nummer (also C) meine ID, die in allen anderen Dateien gleich ist. Ergo: Ich werde an diesem Teil des Modells nichts ändern können :/

    Ich werde heute mal veruchen die Vorschläge umzusetzen und zu verstehen^^ Bisher ist das für mich alles total fremd und ich kann damit nicht wirklich viel anfangen :( Da ich es aber lernen möchte, ist das sicher ein guter Anfang. Ich steige gerne mit schweren Sachen ein ;)

    Sobald ich etwas raus habe, werde ich mich wieder melden.

    Nochmals vielen Dank für die bisherige Hilfe :)
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden