Differenzmenge aus zwei Tabellen?

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

  • Differenzmenge aus zwei Tabellen?

    Hallo,

    trotz suche hab ich leider nichts gefunden
    -vielleicht kann mir ja jemand weiterhelfen? Also:

    Ich habe 2 Tabellen, die eine entält eine ungeordnete Liste von Dateien die gespeichert sind plus zusätzliche Infos als Text. ungefär so:

    Files: [id][name][text]

    Eine zweite Tabelle referenziert diese Liste, wobei mehrfach nennung möglich ist:

    Ref: [id][contentid][fileid]...

    Damit werden nun Inhalte (Dateien) wie folgt aufgelöst:

    Files:
    1, File1.txt, Datei 1
    2, Bild1.jpg, Bild 1
    3, Doc1.doc, Dokument 1
    4, File2.txt, Datei 2
    .....usw.

    Ref:
    1, 1, 1
    2, 1, 3
    3, 1, 4
    4, 2, 1
    5, 3, 4

    wer genau hinschaut sieht, das Eintrag Files 2 in der Referenz nicht vorkommt. Und hier liegt (mein) Hund begraben. Ab und zu möchte ich die Files-Tabelle aufräumen und alle wegschmeissen die nicht(!!) in der Referenz vorkommen. Also eben die Differenzenge löschen. Hab schon probiert, klappt aber nicht.

    Wer hilft?

  • #2
    check das mal....
    Code:
    SELECT
        *
    FROM
        Ref R
            RIGHT JOIN Files F ON R.fileid = F.id
    WHERE
        R.fileid = NULL
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Leider nein, da in Ref keine leeren Einträge für fileid vorhanden sind

      (habs grad mal probiert und bekomme eine leere zeile zurück)

      Kommentar


      • #4
        Original geschrieben von tomschrot
        (habs grad mal probiert und bekomme eine leere zeile zurück)
        das war eigentlich auch mein wunsch ....

        du solltest damit einen datensatz erhalten, der bei files.id eine 2 hat und bei red.fileid ein NULL gibt.

        ansonsten warte mal, bis happy hier vorbei schaut...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Aha! Manchmal brauchts nur einen kleinen Anstoss um die gewünschte Lösung zu finden. (so was nennt man betiebsblind)

          Wenn ich deinen Vorschlag umdrehe gehts:

          SELECT files.* FROM files
          LEFT JOIN ref
          ON files.id = ref.fileid
          WHERE ref.fileid IS NULL

          geht!

          Erstmal vielen Dank!

          Kommentar


          • #6
            Original geschrieben von tomschrot
            Wenn ich deinen Vorschlag umdrehe gehts:
            jepp. das wäre mein zweiter ansatz gewesen. wollte ihn aber nicht posten, da meiner meinung nach das prinzip eh das gleiche gewesen ist...

            aber wenn es nun passt, ist die welt ja supergrün...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar

            Lädt...
            X