tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
210
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    erika7 Tutorials.de Gastzugang
    Hallo zusammen,

    hab im Forum gesucht, aber leider nichts gefunden, weiß aber auch nicht wirklich, nach was ich da suchen muss. Außerdem bin ich in SQL noch nicht so fit, wie ich es für diese Anforderung vielleicht sein müsste.

    Also es geht um folgendes:

    Ich habe drei Tabellen für Übersetzungsterme die ich hier mal sehr vereinfacht beschreibe:

    Tabelle 1: key, term
    Tabelle 2: key, sprache
    Tabelle 3: termkey, sprachkey, übersetzung

    Ein kleines Beispiel mit drei Übersetzungstermen:
    Tabelle 1: (1,Herr), (2,Frau), (3,Kind)
    Tabelle 2: (1,DE), (2,EN), (3,FR)
    Tabelle 3: (1,1,Herr), (2,1,Frau), (3,1,Kind), (2,1,Mr), (3,2,Madame)

    Mit SELECT ... FROM Tab1, Tab2 erhalte ich alle Term-Sprachkombinationen, die es gibt, das ist mir klar.

    Und mit SELECT ... FROM Tab1, Tab2, Tab3 WHERE Tab1.key=Tab3.termkey AND Tab2.key=Tab3.sprachkey würde ich alle definierten Terme bekommen. (Herr, DE, Herr), (Frau, DE, Frau), (Kind, DE, Kind), (Herr, EN, Mr), (Frau, FR, Madame)

    Was ich aber brauche, sind genau die Terme, die nicht definiert sind, also (Frau, EN), (Kind, EN), (Herr, FR), (Kind, FR).

    Ist so etwas machbar? Kann man irged wie die Differenz zwischen der ersten und der zweiten Abfrage berechnen? Und wenn ja, wie?

    Würde mich freuen, wenn mir hier einer helfen könnte.

    Gruß,

    Erika
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.673
    so
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    SELECT
        allalloc.*
    FROM
        (
            SELECT 
                term.KEY AS termkey,
                lang.KEY AS sprachkey
            FROM 
                tab1 AS term, 
                tab2 AS lang
        ) AS allalloc
        LEFT JOIN tab3 AS alloc
            ON allalloc.termkey = alloc.termkey
            AND allalloc.sprachkey = alloc.sprachkey
    WHERE
        alloc.termkey IS NULL
    oder so
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    
    SELECT 
        term.KEY AS termkey,
        lang.KEY AS sprachkey
    FROM 
        tab1 AS term, 
        tab2 AS lang
    WHERE
        ROW(term.KEY, lang.KEY) NOT IN (SELECT termkey, sprachkey FROM tab3)

    Beides geht....
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von Steusi
    Steusi Steusi ist offline Nasenbär
    Registriert seit
    Sep 2006
    Ort
    MV
    Beiträge
    428
    Klasse Ansatz yaslaw, meiner war etwas sehr komplex, da ich ROW noch gar nicht kannte
    Damit aber die Ausgabe korrekt ist, selektieren wir nicht den key
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    
    SELECT tab1.term,
           tab2.sprache
    FROM 
        tab1,
        tab2
    WHERE
    ROW(tab1.KEY, tab2.KEY) NOT IN (SELECT termkey, sprachkey FROM tab3)
     
    Gruß Steusi

    Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
    Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
    PHP-Code:
    $fehler "dummer Tippfehler";
    echo(
    "Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!"); 

  4. #4
    erika7 Tutorials.de Gastzugang
    Hallo yaslaw, hallo Steusi,

    vielen Dank für Eure Antworten. Die Lösung ist genau das was ich suchte. Das mit den Subqueries muss ich wohl noch lernen, aber die Lösung ist sehr elgenant und einfach umzusetzen. Wie immer: Ganz einfach, wenn man weiß wies geht...

    Dami ist mein Problem gelöst.

    Nochmals vielen Dank,

    erika7
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 21.11.10, 23:56
  2. Fehlende Einträge suchen
    Von Sasser im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 05.01.09, 16:47
  3. mehrfach vorhandene Einträge nur einmal finden
    Von supersalzi im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 12.06.07, 22:38
  4. Einträge in Excel suchen
    Von Serethos im Forum Java
    Antworten: 2
    Letzter Beitrag: 21.11.06, 17:07
  5. Einträge suchen (Wildcards?)
    Von maceo im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 14.09.04, 09:02