ich habe hier 2 Views und möchte die gerne in einen zusammenpacken. Dazu bräuchte ich aber irgendwie eine Variable oder so.
Kann mir da vielleicht bitte einer helfen?
CREATE OR REPLACE VIEW billing_in AS
SELECT destinations_in.identify, destinations_in.datum, destinations_in.in_carrier, destinations_in.dauer, ( SELECT preisliste.preis
FROM preisliste
WHERE destinations_in.datum >= preisliste.datum AND destinations_in.dialcode = preisliste.dialcode AND destinations_in.in_carrier = preisliste.carrier
LIMIT 1)
FROM destinations_in;
CREATE OR REPLACE VIEW destinations_in AS
SELECT call.identify, call.datum, call.in_carrier, call.dauer, ( SELECT preisliste.dialcode
FROM preisliste
WHERE call.ausgangsnummer ~~ (preisliste.dialcode || '%'::text) AND call.in_carrier = preisliste.carrier AND call.datum >= preisliste.datum
ORDER BY char_length(preisliste.dialcode) DESC
LIMIT 1) AS dialcode
FROM call
WHERE call.dauer > 0
ORDER BY call.identify;
Ich habe mich anscheinend falsch ausgedrückt, ich meinte, ich will diese 2 Views in nur eine einzige abfrage zusammenfassen. So dass ich nicht mehr 2 Code Fenster brauche sondern nur noch 1 und trozdem das Gleiche bei rauskommt.
ICh hab aber auch schon ne idee, aber dafür bräuchte ich halt so was wie ne Variable. Das ist da wo es rot ist. In dem Roten Bereich, muss ich auf das Grüne zugreifen. Also ist quasi der Subselect (grün) = destination_in.dialcode Gibt es sowas wie SubSub select oder so?
CREATE OR REPLACE VIEW destinations_in AS
SELECT call.identify, call.datum, call.in_carrier, call.dauer, ( [color=Lime]SELECT preisliste.dialcode
FROM preisliste
WHERE call.ausgangsnummer ~~ (preisliste.dialcode || '%'::text) AND call.in_carrier = preisliste.carrier and [color=DarkOrange]destinations_in.datum >= preisliste.datum[/color] AND
ORDER BY char_length(preisliste.dialcode) DESC
LIMIT 1) AS dialcode,[/color]
( SELECT preisliste.preis
FROM preisliste
WHERE [color=DarkOrange]call.datum >= preisliste.datum[/color] AND [color=Red]destination_in.dialcode[/color] = preisliste.dialcode AND call.in_carrier = preisliste.carrier
LIMIT 1)
FROM call
WHERE call.dauer > 0 AND [color=Magenta]destinations_in.datum >= preisliste.datum[/color]
ORDER BY call.identify;
das wäre, wenn ich die beiden Views zu einem umbaue.
Kann man noch mehr zusammenfassen? zum beispiel wenn ich die beiden Orangen kreterien einfach an die lila stelle setze und das orange weg mache, geht das dann auch?