Jump to content

rodgerwilco

Abgemeldet
  • Gesamte Inhalte

    4
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von rodgerwilco

  1. select id from table

                      where user = 'user1' and id not in vater

     

    Das war für mich die Lösung.

    Vielen Dank

    Hat jemand noch schnell den Unterschied zwischen left join, not in und not exists parat. So wie ich es verstehe ist das Ergebnis in allen Fällen identisch.

  2. Hier noch ein Beispiel:

    id    vater    benutzer
    1              user1
    2     1        user1
    3     1        user1
    4     2        user1
    1              user2
    2     1        user2
    

    Wenn ich jetzt user 1 bin, dann soll das Ergebnis der Datensatz mit id 3 und id 4 sein, da in der Tabelle kein Eintrag existiert, der für diesen Nutzer "user1" in der Spalte vater den wert 3 oder 4 hat. Wenn auf user 2 abgefragt wird, dann soll das Ergebnis der Datensatz mit id 2 sein, da für user2 kein Eintrag mit vater=2 existier.

     

  3. Hallo und willkommen im Forum.

     

    Ein Join auf der gleichen Tabelle?

    Was soll eigentlich als Ergebnis rauskommen?

     

    Hallo,

    das JOIN soll alle die Elemente als Ergebnis liefern, für deren id es einen Eintrag in der Spalte "id" gibt, die aber nicht in der Spalte "vater" eingetragen sind. Das Ganze soll dann eingeschränkt auf einen definierten Nutzernamen sein. Darüber soll ermittelt werden, für welche Elemente bereits Kinder durch einen speziellen Nutzer eingetragen wurden.

  4. Hallo zusammen,

     

    ich habe ein Problem mit einer einschränkenden Bedingung in einem JOIN. Es wäre toll, wenn jemand eine Antwort dazu hätte.

    Ich habe eine Tabelle

    CREATE TABLE beziehungen ( 
    id int not null,
    vater int,
    benutzer varchar (30) not null;
    

    in der Bezeihungen zwischen Objekten in den Spalten "id" und "vater" gespeichert werden. "Benutzer" dient dazu zu speichern, wer einen Eintrag angelegt hat. Über einen JOIN lese ich aus, welche Einträge eine id haben, die ihrerseits nicht als vater eingetragen ist. Kurz gesagt, für welches Element sind keine Kindelemente eingetragen. Das Statement ist folgt formuliert:

    SELECT 
    a.id, a.vater, 
    a.benutzer, a.rechner
    FROM beziehungen AS a LEFT JOIN beziehungen AS b ON a.id = b.vater
    WHERE b.vater Is Null;
    
    

    Soweit funktioniert das ganze auch so wie es soll. Das Problem ist es, wenn die Tabelle von mehreren Nutzern gefüllt wird, die teils identische Einträge schreiben. Dann ist es möglich, dass ein Element bereits im Kontext eines anderen Nutzers angelegt wurde und daher für den eigenen Nutzer ein falsches Ergebnis durch das SELECT gelifert wird. Mein Lösungsansat war es die WHERE-Clause einzuschränken.

    SELECT 
    a.id, a.vater, 
    a.benutzer, a.rechner
    FROM beziehungen AS a LEFT JOIN beziehungen AS b ON a.id = b.vater
    WHERE b.vater Is Null AND a.benutzer='meinNutzer';
    

    Leider hat dies auch nicht den gewünschten Erfolgt, da so keine Elemente gefunden werden, die in meinem Nutzerkontext keinen Kinder haben, jedoch in dem Kontext eines anderen Nutzers.

    Hat jemand einen Denkanstoß, wie diese Abfrage korrekt formuliert werden müsste, um ausschließlich die Elemente meines Nutzers zu berücksichtigen?

     

    Viele Grüße

    rodgerwilco

×
×
  • Neu erstellen...