2 Abfragen zusammenfassen (gibt es variablen in SQL??)

Hy,

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;

Gruß BoOnOdY

Deine Lösung ist unter dem Namen UNION (ALL) bekannt.

Andreas

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.

Gruß TIm

Vielleicht solltest du uns an einem Beispiel demonstrieren, wie das Ergebnis aussehen soll.

Vermutlich nein, nur meine Antwort nicht verstanden.

test=*# create view view1 as select 1;
CREATE VIEW
test=*# create view view2 as select 2;
CREATE VIEW
test=*# create view view_beide as select * from view1 union all select * from view2;
CREATE VIEW
test=*# select * from view_beide ;
 ?column?
----------
        1
        2
(2 rows)

Andreas

Steht doch schon in den beiden views drinne.

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?


Gruß BoOnOdY