[MYSQL] Where Denkblokade am Montag-Morgen

D

Defender

Hallo Leute,

also irgendwie sitz ich im moment total aufm Schlauch.

Mein Problem ist folgendes, ich habe eine Projekt zur Verwaltung von Unterschriftsberechtigungen. Dazu habe ich mehrere Tabellen erstellt aus der ich nun etwas abfragen möchte für eine Suchfunktion.

Aufbau der betreffende Tabelle: ur_unterschriften

  1. unterschrift_id
    • index
  2. beziehung_id
    • fremd_index ( aus Tabelle die die Verbindung zwischen Berechtigten und Kostenstelle enthält)
  3. berechtigung_id
    • fremd_index ( Bezeichnung für was die Unterschrift ist, z.B. Bestallanforderungen in höhe 1000,- €)

Was ich nun nicht hinbekomme ist das ich in meinem Formular, zwei Felder/Berechtigungen (berechtigung_id) auswähle nach denen gesucht werden soll, und nur die Beziehungen (beziehung_id) gefunden werden die mindestens diese beiden Felder enthalten.

Mein Versuch war bisher nach und nach alle Einträge aus der Tabelle mit den Beziehungen (beziehung_id) durchzugehen und einen SELECT auf die oben beschriebene Tabelle zu machen. Beispiel:

SELECT DISTINCT(beziehung_id) FROM ur_unterschriften WHERE (berechtigung_id = '1' OR berechtigung_id = '2') AND beziehung_id = '2'

Dabei finde ich aber auch Einträge die nur "berechtigung_id = 1" oder "berechtigung_id = 2" erfüllen, was ja an dem OR liegt.

Kann mir da vielleicht jemand weiter helfen? Danke schon mal fürs lesen.

MfG
 
Hallo!

Ich kenn mich mit MySQL noch weniger aus als so schon in SQL ^^

Aber es sollte Funktionieren wenn du zuerst einen Select auf beziehung_id like '2' machst und dann ein subselect auf die andere bedingung (berechtigung_id = '1' OR berechtigung_id = '2')
Das erste Select schmeisst dir alle Ergebnisse aus die beziehung_id = 2 haben und somit schon mal diese Bedingung erfüllen. Im 2ten Schritt werden dann nur noch von diesen (berechtigung_id =2 ) diejenigen ausgewaehlt die auch gleichzeitig die berechtigung_id 1 und 2 erfüllen.

hoffe es hilft als Lösungsansatz ;)!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück