Announcement

Collapse
No announcement yet.

Ergebnis einer Abfrage invertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ergebnis einer Abfrage invertieren

    Hallo, alle zusammen

    Ich würde mich riesig freuen, wenn jemand eine Möglichkeit kennen würde, um das Ergebis einer Abfrage zu invertieren. Ich habe zwei Tabellen über eine Relationstabelle miteinander verknüpft und möchte nun alle Datensätze, die einem Benutzer nicht zugeordnet sind (z.B. alle Gruppen, in denen ein Benutzer nicht ist).
    Ich bedanke mich für eure Hilfe

    Ciao mopyfisch

  • #2
    Hallo, wenn ich es richtig verstanden habe möchtest Du folgendes:<br><br>Voraussetzung: 2 Tabellen tblUser und tblGroup<br>Gib alle User, die in Gruppe Admin vorhanden sind (Abfrage qryUserGroup):<br>SELECT tblUser.UserID<br>FROM tblUser INNER JOIN tblGroup ON tblUser.GroupID = tblGroup.GroupID<br>WHERE tblGroup.GName like 'Admin'<br><br>Gib alle User, die nicht in der Gruppe Admin sind(Abfrage qryUserNotGroup):<br>SELECT tblUser.Name<br>FROM tblUser LEFT JOIN qryUserGroup ON tblUser.UserID = qryUserGroup.UserID<br>WHERE qryUserGroup.UserID is null<br>GROUP BY tblUser.Name<br><br>Mit freundlichen Grüßen<br>Helge Marquard

    Comment


    • #3
      Hi

      erstmal Danke für deine Hilfe, aber das ist nicht ganz das was ich meine. Hier noch ein paar Details:
      Beziehung: n->m (also Tb_User <-> Rel_User_Group <-> Tb_Group). Mein Problem ist folgendes, die Listenfelder für die Gruppenzugehörigkeit, bekommen ihren Inhalt aus einer Abfrage, die momentan alle Gruppen aus der Tb_Group ausliest. Dies hat natürlich zur folge, dass ich ein und die selbe Gruppe mehrmals auswählen kann, was natürlich zur folge hat, dass ein und der selbe User in einer Gruppe mehr als einmal sein kann (macht aber irgendwie keinen Sinn, finde ich). Da ich diese beiden Tabellen nun über eine Relationstabelle verknüpfen muss, gibt es natürlich keine leeren Einträge.

      Aber trotzdem Dank

      Comment


      • #4
        Danke erst einmal für deine Hilfe,

        ich habe versucht das Ganze umzusetzen. Hat aber leider nicht geklappt.
        Abfrage:
        SELECT rel_user_group.group_id_zsky, tb_group.group_name
        FROM rel_user_group RIGHT JOIN tb_group ON rel_user_group.group_id_zsky=tb_group.group_id_apk y;

        Liefert mir alle Gruppennamen mit dem Eintrag (id_zsky) aus der Relationstabelle. Da ich zwei Gruppen noch keine User zugeordnet habe, sind zwei Felder leer. Ich kann diese aber nicht mit NULL selektieren. Auch nicht mit <>. Sobald ich versuche eine Auswahl zu treffen, sind diese beiden Felder weg. Ich kann mir das nur so erklären, dass diese Felder ja gar nicht existieren und nur wegen der Tabellenstruktur erscheinen. Also behaupte ich mal, dass ich mit NULL nicht weit komme.

        Ich probier mal weiter, vielleicht habt ihr ja noch ne Ide

        Comment


        • #5
          Wow geschafft, war viel einfacher als ich gedacht habe (ist aber eigentlich immer so).

          hiermit erhalte ich alle Gruppen in denen ein Benutzer ist:

          <PRE>
          SELECT DISTINCTROW tb_group.group_id_apky, rel_user_group.group_id_zsky, tb_group.group_name
          FROM rel_user_group RIGHT JOIN tb_group ON rel_user_group.group_id_zsky=tb_group.group_id_apk y;
          </PRE>

          hiermit wähle ich alle Gruppen aus und selektiere dann diejenigen, die nicht in der oberen Abfrage vor kommen.

          <PRE>
          SELECT DISTINCTROW tb_group.group_id_apky, tb_group.group_name
          FROM qry_ingroup3 RIGHT JOIN tb_group ON qry_ingroup3.group_id_zsky=tb_group.group_id_apky
          WHERE tb_group.group_id_apky Not In (qry_ingroup3.group_id_zsky);
          </PRE>

          Nu hab ich noch das Problem, dass er mir die Gruppen nicht mehr anzeigt, in denen der User schon ist, aber Probleme sind ja dazu da, gelöst zu werden.

          Also danke noch ma

          Comment

          Working...
          X