Einzelnen Beitrag anzeigen

manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

SQL Optimierung / Erweiterung

  Alt 1. Feb 2010, 16:39
Datenbank: MySQL • Version: 5.0.85-community • Zugriff über: copycat
Hallo zusammen

für die Benutzerauthentifizierung auf dem MySQL Server verwende ich folgende funktionierenden SQL:
SQL-Code:
( MEMBER_GROUP = 'ADMIN')
OR (( MEMBER_GROUP = 'CAMP') AND (CONDITION_VALUE = NEW.C_NO))
OR (NEW.C_NO IN (SELECT RPL$GROUPS_RIGHTS.CAMP_NO
    FROM RPL$GROUPS JOIN RPL$GROUPS_RIGHTS ON RPL$GROUPS_RIGHTS.GROUP_NO = RPL$GROUPS.GROUP_NO
    WHERE RPL$GROUPS.GROUP_NO = MEMBER_GROUP))
diesen möchte ich nun ein wenig erweitern / um die Abfrage von 2 Tabellen ungefähr so:
SQL-Code:
( MEMBER_GROUP = 'ADMIN')
OR (( MEMBER_GROUP = 'CAMP')
      AND (CONDITION_VALUE = NEW.C_NO)
      AND (NEW.SERVICE_NAME IN (SELECT RPL$SERVICE_TABLES.TABLE_NAME
           FROM RPL$SERVICE JOIN RPL$SERVICE_TABLES ON RPL$SERVICE_TABLES.SERVICE_NAME = RPL$SERVICE.SERVICE_NAME
           WHERE RPL$SERVICE.SERVICE_NAME LIKE SERVICE))
    )
OR (NEW.C_NO IN (SELECT RPL$GROUPS_RIGHTS.CAMP_NO
    FROM RPL$GROUPS JOIN RPL$GROUPS_RIGHTS ON RPL$GROUPS_RIGHTS.GROUP_NO = RPL$GROUPS.GROUP_NO
    WHERE RPL$GROUPS.GROUP_NO = MEMBER_GROUP)
    AND (NEW.SERVICE_NAME IN (SELECT RPL$SERVICE_TABLES.TABLE_NAME
           FROM RPL$SERVICE JOIN RPL$SERVICE_TABLES ON RPL$SERVICE_TABLES.SERVICE_NAME = RPL$SERVICE.SERVICE_NAME
           WHERE RPL$SERVICE.SERVICE_NAME LIKE NEW.SERVICE)))
    )
Die 2 Tabellen sind:
RPL$SERVICE
Felder: SERVICE_NAME
RPL$SERVICE_TABLES
Felder: SERVICE_NAME / TABLE_NAME

Ein Problem ist dass ich in der aktuellen Tabelle ein Feld ( NEW.SERVICE )habe das mehrere Werte beinhalten kann.
( z.B Hotel / Altersheim ... ) Es soll nun geprüft werden ob in RPL$SERVICE.SERVICE_NAME ein Wert vorhanden ist
der im Feld NEW.SERVICE auftaucht ( Es können auch mehrere sein ).

Wie kann ich auf diese in dieser SQL zugreifen?
Wenn Ihr noch Tipps für die Optimierung oder Vereinfachung habt bin ich dankbar.
Hoffe ich konnte die Frage verständlich erläutern.

Manfred
  Mit Zitat antworten Zitat