[SQL] Kombination von Select

Dieses Thema im Forum "Webentwicklung" wurde erstellt von proHacker, 26. November 2009 .

Schlagworte:
  1. 26. November 2009
    Kombination von Select

    Hallo,
    ich habe folgende Problematik:

    Die Abfrage von Kontaktdaten aus einer Datenbank soll mittels zweier SELECT Abfragen gefiltert werden.

    Die erste SELECT beinhaltet diverse Rechteeinschränkungen da nicht jeder User alle Datensätze sehen soll, diese Abfrage kann bei jedem User anders aussehen z.B. PLZ größer als 10000 und kleiner als 30000 usw... (hier kann AND und OR vorkommen)

    Die zweite SELECT ist ein Suchfilter den der User selber zusammenstellen kann (durch Eingabe gewisser Suchparametere kann er sich z.B. aus allen Datensätzen die Ihm entsprechend seiner Rechte in SELECT 1 zur Verfügung stehen sich nur die Kontaktdaten aus z.B. Musterort anzeigen lassen) (auch hier kann AND und OR vorkommen)

    Meine Problematik ist das ich diese beiden Abfragen nicht zusammen bekomme ich hab diverses mit UNION versucht und auch verschiedene Verschachtelungen der SELECTS durchprobiert ohne den gewünschten Erfolg.

    Ich hoffe einer hat die erleuchtende Idee wie ich das abbilden kann
     
  2. 26. November 2009
    AW: Kombination von Select

    Also wenn du z.B. drei Tabellen hast (Benutzer, Rechte und Adresse) und ich dich richtig verstanden habe, dann kannst du das so machen:

    SELECT Adresse.Anschrift, Adresse.Strasse, Adresse.PLZ, Rechte.*
    WHERE Adresse.Benutzer_id = Benutzer.id AND Rechte.Benutzer_id = Benutzer.id AND Adresse.Strasse = 'Musterstraße'
    FROM Adresse, Rechte, Benutzer

    Wenns so nicht geht, müsste es auf jeden Fall zumindest eine Hilfe sein, wie du mehrere Tabellen verknüpfen kannst. Oder du schaust dir mal JOINS an, machen aber nichts anderes.
     
  3. 27. November 2009
    AW: Kombination von Select

    Also am besten wird sein wenn man gleich ein inner select daraus macht, das könnte in manchen anwendungsfällen performanter sein. in deinem anwendungsfall würde ich erst alle tabellen holen auf die der benutzer rechte hat und dann auf die filter ausführen:

    Code:
    SELECT * FROM
     (SELECT Benutzer.* 
     FROM Benutzer JOIN Rechte ON Benutzer.id = Rechte.benutzer_id 
     WHERE ... Rechte Bedingungen ... 
     ) 
    WHERE
    ... Filter Bedingungen ...
    
     
  4. 27. November 2009
    AW: Kombination von Select

    warum müssen das zwangsweise 2 SELECT-anweisungen sein? warum postest du nicht einfach das tabellenlayout? fährst ja schließlich auch mit'm auto in die werkstatt
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.