WHERE in Views

knanders

Benutzer
Beiträge
5
Ich habe 2 Tabellen mit ähnlichem Inhalt aber unterschiedlichen Feldnamen, die ich mit UNION zusammen'merge' um das Gesamtergebnis zu sortieren:

(SELECT tabelle1Id AS Id,
tabelle1Text AS text,
tabelle1Angelegt AS datum
...
FROM tabelle1
WHERE tabelle1User = 1)
UNION
(SELECT tabelle2Id AS Id,
tabelle2Kommentar AS text,
tabelle2MitgliedSeit AS datum
...
FROM tabelle2
WHERE tabelle2Mitglied = 1)
ORDER BY satum ASC


Diese Query funktioniert auch - aber ich müßte immer die User/MitgliedsNummer (in diesem Fall 1) angeben.
Deswegen möchte ich ganz gerne aus dieser Query ein View machen, bei dem ich an beide Tabellen mit der WHERE-Clause die Nummer übergebe:

SELECT * FROM myView WHERE Person = 1

Irgendwie habe ich da keine passende Idee für
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
Ich habe 2 Tabellen mit ähnlichem Inhalt aber unterschiedlichen Feldnamen, die ich mit UNION zusammen'merge' um das Gesamtergebnis zu sortieren:

(SELECT tabelle1Id AS Id,
tabelle1Text AS text,
tabelle1Angelegt AS datum
...
FROM tabelle1
WHERE tabelle1User = 1)
UNION
(SELECT tabelle2Id AS Id,
tabelle2Kommentar AS text,
tabelle2MitgliedSeit AS datum
...
FROM tabelle2
WHERE tabelle2Mitglied = 1)
ORDER BY satum ASC


Diese Query funktioniert auch - aber ich müßte immer die User/MitgliedsNummer (in diesem Fall 1) angeben.
Deswegen möchte ich ganz gerne aus dieser Query ein View machen, bei dem ich an beide Tabellen mit der WHERE-Clause die Nummer übergebe:

SELECT * FROM myView WHERE Person = 1

Irgendwie habe ich da keine passende Idee für

Wo ist das Problem? Du erstellst einen VIEW, basierend auf Deinem UNION. Diesen VIEW fragst dann mir WHERE ab.

Code:
test=*# select * from knanders1;
 id | value
----+-------
  1 | text1
(1 row)

test=*# select * from knanders2;
 id | value
----+-------
  2 | text2
(1 row)

test=*# select * from knanders1 union all select * from knanders2;
 id | value
----+-------
  1 | text1
  2 | text2
(2 rows)

test=*# create view view_knanders as select * from knanders1 union all select * from knanders2;
CREATE VIEW
test=*# select * from view_knanders where id = 1;
 id | value
----+-------
  1 | text1
(1 row)
 
Werbung:
Oben