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

SQL-String-Suche

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Bongo, 14 August 2014.

  1. Bongo

    Bongo Benutzer

    Hallo zusammen,

    ich versuche mich bereits den ganzen Tag an einem Select, den ich nicht so wirklich auf die Reihe kriege.

    Habe die folgenden zwei Tabellen:

    BUCHUNGEN
    ****************
    Field | Type
    -------------+---------------------
    ID | int(11)
    BUCHTAG | date
    BUCHZEIT | time
    SOLL | smallint(5) unsigned
    HABEN | smallint(5) unsigned
    BETRAG | float(7,2)


    KTO_PLAN
    *************
    Field | Type
    ---------+---------------------
    KTONR | smallint(5) unsigned
    LABEL | varchar(30)
    AKTIV | tinyint(1)
    KATID | tinyint(3) unsigned


    BUCHUNGEN.SOLL und BUCHUNGEN.HABEN sind Fremdschlüssel von KTO_PLAN.KTONR.
    Statt der folgenden Ausgabe:

    (SELECT SOLL, HABEN, BETRAG FROM BUCHUNGEN; )

    SOLL | HABEN | BETRAG
    ------+-----------+-------
    1000 | 1003 | 77.90
    1005 | 1003 | 20.00

    möchte ich die Kontenbezeichnungen (statt der Nummern) ausgeben:

    (SELECT KTS1.LABEL 'SOLL', KTO_PLAN.LABEL 'HABEN', BETRAG
    FROM BUCHUNGEN, KTS1, KTO_PLAN
    WHERE SOLL=KTS1.KTONR AND HABEN=KTO_PLAN.KTONR; )

    SOLL | HABEN | BETRAG
    -------------------------+---------+-----------
    Einkauf: Lebensmittel | Bank | 77.90
    Tanken | Bank | 20.00

    Ich habe mir hier eine View (KTS1) zur Hilfe erstellt, die lediglich alle Kontonummern und ihre
    Bezeichnungen aus KTO_PLAN selektiert, weil ein Join wie "WHERE SOLL=KTO_PLAN.KTONR AND HABEN=KTO_PLAN.KTONR",
    nicht so einfach funktioniert und meine Sub-Select-Versuche auch alle zu falschen Ergebnissen führten.
    Da mir das nicht wirklich so gefällt, frage ich mich (bzw. Euch), ob man nicht zwei Attribute der einen
    Tabelle (SOLL und HABEN aus BUCHUNGEN), über ein Attribut der anderen Tabelle (KTONR aus KTO_PLAN) abbilden kann?


    Ich danke Euch für's Reinschauen

    Gruß
    Kai
     
  2. akretschmer

    akretschmer Datenbank-Guru

    So weit, so schlecht. Es gibt timestamp. Warum zertrümmerst Du die Beziehung zwischen Datum und Zeit?

    Dazu brauchst Du 2 Joins. Stell Deine Abfrage auf expliziete Joins um und gib jedem seinen Alias. Du bist nicht allzu weit weg von der Lösung, deswegen sag ich jetzt nicht mehr. Du schaffst das.
     
  3. Bongo

    Bongo Benutzer

    Hallo und vielen Dank für Deine Hilfe.

    Das mit dem zerfetzten Timestamp war nur so ein Test. Wollte nur mal überprüfen, ob das Ergebnis der Funktion now(), je nach Feld-Datentyp maskiert wird.

    Habe deinen Rat jetzt so in die Tat umgesetzt:

    select buchtag, buchzeit, a.label, b.label, betrag from buchungen inner join kto_plan a on (a.ktonr=soll) inner join kto_plan b on (b.ktonr=haben);

    Ist das so OK?


    Gruß
    Kai
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Sieht so aus.
     
  5. ukulele

    ukulele Datenbank-Guru

    Die Angabe von SOLL und HABEN als Spaltenname für Konto und Gegenkonto ist hier auch etwas verwirrend. Soll/Haben ist ja normalerweise die Angabe Negativ/Positiv auf Konto, Gegenkonto ist dann quasi die Gegenbuchung.
     
Die Seite wird geladen...

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