WHERE condition komplett aus anderer Tabelle

Hallo,

ich habe zwei Tabellen die in etwa so aufgebaut sind. Das ist nicht auf meinem Mist gewachsen und lässt sich leider nicht ändern.

rights
[TABLE]
[TR]
[TD]username
[/TD]
[TD]where_part
[/TD]
[/TR]
[TR]
[TD]hans
[/TD]
[TD]a=1
[/TD]
[/TR]
[TR]
[TD]peter
[/TD]
[TD]a=3
[/TD]
[/TR]
[/TABLE]

infos
[TABLE]
[TR]
[TD]a
[/TD]
[TD]text
[/TD]
[/TR]
[TR]
[TD]1
[/TD]
[TD]salami
[/TD]
[/TR]
[TR]
[TD]3
[/TD]
[TD]schinken
[/TD]
[/TR]
[/TABLE]

Wie kann ich folgenden SELECT realisieren?

select * from infos where (select where_part from rights where username=CURRENT_USER);

Dabei bekomme ich logischerweise den Fehler: “FEHLER: Argument von WHERE muss Typ boolean haben, nicht Typ character”.


Vielen Dank!
Magnus

Du musst natürlich noch das Ergebniss des Subselect mit irgendwas vergleichen damit du den geforderten Boll zurückbekommst.
Also sowas z.B.

select * from infos where (select where_part from rights where username=CURRENT_USER) = $IRGENDWAS

Oder du baust das SQL so um, das du mit joins arbeiten kannst. Irgendwie müssen die Daten ja zusammenhängen.

Gruß Uwe

Das ist eben mein Problem, der Vergleich steht ja komplett in der anderen Tabelle: “a=1”



test=# select * from rights ;
 username | where_part
----------+------------
 hans     | a=1
 peter    | a=3
(2 rows)

test=# select * from infos;
 a |    t
---+----------
 1 | salami
 3 | schinken
(2 rows)

test=# select * from infos where a in (select regexp_replace(where_part,'a=','') from rights where username='hans');
 a |   t
---+--------
 1 | salami
(1 row)

Geht aber nicht mehr, wenn sich die Spalte im WHERE auch noch dynamisch gestaltet. Dann wirst das scripten müssen (plpgsql-Funktion)


Andreas