
Zitat von
Magnus
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 | username | where_part |
| hans | a=1 |
| peter | a=3 |
infos | a | text |
| 1 | salami |
| 3 | schinken |
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
Code:
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
Lesezeichen