Announcement

Collapse
No announcement yet.

Schwierige SQL-Anweisung mit INNER JOIN und Filter

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

  • Schwierige SQL-Anweisung mit INNER JOIN und Filter

    verwendetes Datenbanksystem: Microsoft SQL 2005 und höher

    Guten Morgen,

    ich habe eine kleines Problem bei der Umsetzung einer SQL-Abfrage unter bestimmten Rahmenbedingungen.

    Ich habe zwei Tabellen (siehe anhang) (Die Tabellen im Anhang sind auf das wesentliche gekürzt.).
    Tabelle1 enthält Anweisungen und Tabelle2 ist eine Art Rechtetabelle.
    In der Rechtetabelle wird gespeichert welche Benutzergruppen die Anweisung sehen düfen. Also ist für jede
    Benutzergruppe die eine Anweisung sehen darf ein Eintrag vorhanden.

    Die Tabelle2 ist mit Tabelle1 so verknüpft Tabelle1.GUID =Tabelle2.GUIDBETRAW
    Die GruppenID ist in der Spalte ORGFILTER gespeichert.

    Mein Problem ist nun folgendes:
    Ein Benutzer kann mehreren Gruppen angehören. Wenn nun eine Anweisung von mehreren Gruppen des
    Benutzers gesehen werden kann taucht diese mehrfach in der Liste auf. Wie bekomme ich es hin das die
    Anweisung nur einmal Angezeigt wird?

    Hier die bisherige Anweisung
    Code:
    SELECT t1.GUID, t1.BTRWNR, t1.BGBEZ1, t2.* FROM Tabelle1 AS t1 
    INNER JOIN Tabelle2 AS t2 ON t1.GUID = t2.GUIDBETRAW 
    WHERE t2.ORGFILTER ='00002' OR t2.ORGFILTER  ='0000300001'
    Wobei hier "00002" und "0000300001" als Beispiele zum angehängten Datenbestand dient.

    Und noch mal zur Übersicht die Tabellen Struktur
    Code:
    Tabelle1:
    BGBEZ1;BTRWNR;GUID
    
    Tabelle2:
    GUID;GUIDBETRAW;ORGBEZ;ORGID;ORGFILTER;ORGGUID
    Ich hoffe jemand kann mir da weiterhelfen.
    Gruß TomArte
    Attached Files

  • #2
    Mal eine blöde Frage von mir: Bietet Microsoft SQL 2005 nicht von sich aus entsprechende Rechte-Konzepte an welche du verwenden kannst? Weshalb noch einmal programmieren was schon existiert?

    Gruss

    Comment


    • #3
      Originally posted by TomArte View Post
      ...Wie bekomme ich es hin das die
      Anweisung nur einmal Angezeigt wird?
      Vlt. findet sich hier was: Bei "doppelten" Datensätzen nur einen anzeigen

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        @Wernfried
        Ja SQL 2005 bietet was an was aber nicht an die Gegebenheiten der Software passt. In der Software gibt es Verschiedene Gruppen und Benutzer und Gruppen können Herarchisch Strukturiert werden. Da kann es schon mal vorkommen das es eine Gruppe mit einer Tiefe von 30 Knoten geben kann diese alle mit SQL-Server Gruppen abzubilden wäre zu viel aufwand.

        @Falk
        Ja hatte ich gesehen hat aber auch nicht Funktioniert.

        Habe das Problem nun gelöst mir ist nämlich ein kleiner Fehler im Statement unterlaufen.
        Das t2.* musste gar nicht sein. Lasse ich dieses weg und schreibe DISTINCT vorne vor Funktioniert alles einwandfrei.

        Trodzdem danke für eure Hilfe.

        Gruß Lars

        Comment


        • #5
          Ich bewundere gerade diese Konsequenz, mit der in diesem Thread die Interpunktion missachtet wird (Rechtschreibung lass ich mal außen vor).

          Das t2.* bewirkte vermutlich, dass die Datensätze doch nicht identisch waren. Also war das DISTINCT sinnfrei. Aber nun scheint es ja geklärt zu sein.

          Comment

          Working...
          X