Paul: Abfrage nur Ergebnis wo Zuordnung fehlr

Hallo mein Name ist Paul und ich habe ein grosses Problem mit einer MYSQL Abfrage, vieleichtr kann mir hier jemand unter die Arme greifen!

Ich habe meine Seiten in einer MYSQL Datenbank abgespeichert.
ID, Name, Zuordnung
1 Startseite 0
2 Unterseite 1
3 Unterseite 1
4 Menüpunkt 0
5 Unterseite 4

6 ------------- wurde gelöscht---- ist also nicht mehr vorhanden

7 Problem         6

Wenn ich also jetzt die Zuordnungen abrufe wird die Seite mit der ID 7 nicht mehr angezeigt, weil ja die Zuordnung von 6 auf 6 nicht mehr da ist. Alle Seiten mit Zuordnung 0 sind Hauptpunkte.

und wenn ich jetzt aber genau die Abfrage andersrum machen möchte...

Ich will nur die Tabellensätze habe, die keine Zuordnung mehr haben, also nur die wo die Zuordnung gelöscht wurde?

Es sollte nur die ID 7 angezeigt werden.

Paul

  1. Om nah hoo pez nyeetz, Paul!

    Ich habe meine Seiten in einer MYSQL Datenbank abgespeichert.
    ID, Name, Zuordnung
    1 Startseite 0
    2 Unterseite 1
    3 Unterseite 1
    4 Menüpunkt 0
    5 Unterseite 4

    6 ------------- wurde gelöscht---- ist also nicht mehr vorhanden

    7 Problem         6

    Wenn ich also jetzt die Zuordnungen abrufe wird die Seite mit der ID 7 nicht mehr angezeigt, weil ja die Zuordnung von 6 auf 6 nicht mehr da ist. Alle Seiten mit Zuordnung 0 sind Hauptpunkte.

    und wenn ich jetzt aber genau die Abfrage andersrum machen möchte...

    Ich will nur die Tabellensätze habe, die keine Zuordnung mehr haben, also nur die wo die Zuordnung gelöscht wurde?

    Es sollte nur die ID 7 angezeigt werden.

    Deine Datenbank ist kaputt. Du hast eine 1:1-Beziehung. Die Datenbank selbst sollte das Löschen des Datensatzes 6 unterbinden, weil er vom Datensatz 7 referenziert wird.

    Stichwort: referentielle Integrität.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Mond und mondän.

    1. Ok Matthias,
      aber nehmen wir an, es ist passiert und der Datensatz wurde gelöscht.Ich möchte mir nun die Datensätze anzeigen lassen, die eben keine Zuordnung mehr haben.

      Ich habe es so versucht. Das Ergebnis habe ich, doch leider 6 mal. Genauso viel wie Datensätze in der Datenbank sind..

      select  * from
      table a,
      table b
      WHERE
      b.ID !=a.Zuordnung

      Paul

      > Om nah hoo pez nyeetz, Paul!

      Ich habe meine Seiten in einer MYSQL Datenbank abgespeichert.
      ID, Name, Zuordnung
      1 Startseite 0
      2 Unterseite 1
      3 Unterseite 1
      4 Menüpunkt 0
      5 Unterseite 4

      6 ------------- wurde gelöscht---- ist also nicht mehr vorhanden

      7 Problem         6

      Wenn ich also jetzt die Zuordnungen abrufe wird die Seite mit der ID 7 nicht mehr angezeigt, weil ja die Zuordnung von 6 auf 6 nicht mehr da ist. Alle Seiten mit Zuordnung 0 sind Hauptpunkte.

      und wenn ich jetzt aber genau die Abfrage andersrum machen möchte...

      Ich will nur die Tabellensätze habe, die keine Zuordnung mehr haben, also nur die wo die Zuordnung gelöscht wurde?

      Es sollte nur die ID 7 angezeigt werden.

      Deine Datenbank ist kaputt. Du hast eine 1:1-Beziehung. Die Datenbank selbst sollte das Löschen des Datensatzes 6 unterbinden, weil er vom Datensatz 7 referenziert wird.

      Stichwort: referentielle Integrität.

      Matthias

  2. Tach!

    Ich will nur die Tabellensätze habe, die keine Zuordnung mehr haben, also nur die wo die Zuordnung gelöscht wurde?

    Selektiere von der Tabelle, wenn nicht existiert: ein Datensatz mit der ID des Zuordnungswertes.

    SELECT felder FROM tabelle t1 WHERE NOT EXISTS( SELECT * FROM tabelle t2 WHERE t2.id = t1.zuordnung)

    Normalerweise sollte das Problem aber nicht auftreten, wenn du beim Verwalten der Daten aufpasst, dass so eine Situation nicht entstehen kann. MySQLs Database Engine MyISAM kann das nicht sicherstellen, aber mit InnoDB kann man solche Beziehungen so verwalten, dass ein Löschen nicht möglich ist, wenn Kinder existieren oder dass die Verweise auf NULL gesetzt werden oder dass die Kinder mit gelöscht werden.

    dedlfix.