Benutzer-Werkzeuge

Webseiten-Werkzeuge


views

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
views [2016/01/08 15:48]
chorn
views [2016/01/08 00:00] (aktuell)
Zeile 11: Zeile 11:
   ​   ​
 Daten einpflegen Daten einpflegen
-  ​+ 
 +<code sql>
   insert into products(asin,​ name, price) values   insert into products(asin,​ name, price) values
   ("​A1",​ "​Apfel",​ 1.23),   ("​A1",​ "​Apfel",​ 1.23),
   ("​B2",​ "​Birne",​ 2.34),   ("​B2",​ "​Birne",​ 2.34),
-  ("​C3",​ "​Orange",​ 3.45), ("E5", "​Pflaume",​ 3.45); +  ("​C3",​ "​Orange",​ 3.45), 
-  +  ​("D4", "​Pflaume",​ 3.45); 
 +</​code>​ 
 + 
 +<code sql>
   insert into orders(asin,​ quantity, buy) values   insert into orders(asin,​ quantity, buy) values
   ("​A1",​ 2, "​2016-01-08 12:​00:​00"​),​ -- ok   ("​A1",​ 2, "​2016-01-08 12:​00:​00"​),​ -- ok
   ("​B2",​ 3, "​2016-01-07 12:​00:​00"​),​ -- ok   ("​B2",​ 3, "​2016-01-07 12:​00:​00"​),​ -- ok
-  ("D4", 4, "​2016-01-06 12:​00:​00"​),​ -- no related product+  ("E5", 4, "​2016-01-06 12:​00:​00"​),​ -- no related product
   ("​A1",​ 5, "​2016-01-05 12:​00:​00"​),​ -- out of time   ("​A1",​ 5, "​2016-01-05 12:​00:​00"​),​ -- out of time
   ("​C3",​ 1, "​2016-01-06 12:​00:​00"​) ​ -- insufficient quantity   ("​C3",​ 1, "​2016-01-06 12:​00:​00"​) ​ -- insufficient quantity
-  ​+</​code>​ 
 Was steht drin? Was steht drin?
-  ​+ 
 +<code sql>
   select * from products   select * from products
-  ​ +</​code>​ 
-  "​A1","​Apfel","​1" + 
-  "​B2","​Birne","​2" + 
-  "​C3","​Orange","​3" +^ asin ^ name ^ price ^ 
-  +A1 Apfel 1.23 | 
 +B2 Birne 2.34 | 
 +C3 Orange ​3.45 | 
 +| D4 | Pflaume | 3.45 | 
 + 
 + 
 +<code sql>
   select * from orders   select * from orders
-  ​ +</​code>​ 
-  "​A1","​2","​2016-01-08 12:00:00" + 
-  "​B2","​3","​2016-01-06 12:00:00" + 
-  "​D4","​4","​2016-01-06 12:00:00" +^ asin ^ quantity ^ buy ^ 
-  "​A1","​5","​2016-01-05 12:00:00" +A1 2016-01-08 12:​00:​00 ​| 
-  "​C3","​1","​2016-01-06 12:00:00" +B2 2016-01-07 12:​00:​00 ​| 
-  +| E5 | 2016-01-06 12:​00:​00 ​| 
 +A1 2016-01-05 12:​00:​00 ​| 
 +C3 2016-01-06 12:​00:​00 ​
 + 
 Eine View für Bestellungen ab dem 6.1. Eine View für Bestellungen ab dem 6.1.
-  ​+ 
 +<code sql>
   create view recentOrders as   create view recentOrders as
   select *   select *
Zeile 52: Zeile 69:
   buy asc,   buy asc,
   quantity desc   quantity desc
 +</​code>​
     
 +<code sql>
   select * from recentOrders   select * from recentOrders
-  ​+</​code>​ 
 Ergebnis: Ergebnis:
-  ​ 
-  asin, quantity, buy, name, price 
-  "​B2",​ 3, "​2016-01-06 12:​00:​00",​ "​Birne",​ 2.34 
-  "​A1",​ 2, "​2016-01-08 12:​00:​00",​ "​Apfel",​ 1.23 
  
-Und eine View für Artikel mit höchsten Umsatz:+ 
 +^ asin ^ quantity ^ buy ^ name ^ price ^ 
 +| B2 | 3 | 2016-01-07 12:00:00 | Birne | 2.34 | 
 +| A1 | 2 | 2016-01-08 12:00:00 | Apfel | 1.23 | 
   ​   ​
 +Für C, D, und E sind keine Ergebnisse vorhanden, da kein entsprechendes Produkt vorlag, die Bestellung älter als einen Tag oder die Stückzahl zu klein war.
 +
 +Und hier eine View für Artikel mit höchsten Umsatz:
 +
 +<code sql>
   create view highSalery as    create view highSalery as
-  select p.*, count(o.asin) as sold, count(o.asin) * price as total+  select 
 + p.*, 
 + count(o.asin) as sold, 
 + count(o.asin) * price as total
   from products p   from products p
   left join orders o using(asin)   left join orders o using(asin)
   group by asin   group by asin
   order by total desc   order by total desc
 +</​code>​
     
 +<code sql>
   select * from highSalery   select * from highSalery
-  ​+</​code>​ 
 Ergebnis: Ergebnis:
-  ​ + 
-  asin,name,price,sold,total + 
-  "​C3", "Orange",  ​3.4513.45 +asin name price sold total ^ 
-  "​A1", "Apfel", ​  1.2322.46 +C3 Orange ​3.45 3.45 | 
-  "​B2", "Birne", ​  2.3412.34 +A1 Apfel 1.23 2.46 | 
-  "​E5",​ "Pflaume", ​3.4500.00+B2 Birne 2.34 2.34 | 
 +| D4 | Pflaume ​3.45 0.00 
  
 ---- ----
Zeile 88: Zeile 121:
   * Bei der Abfrage einer **View** durch den **Client** werden die geforderten Daten aus den einzelnen Tabellen und Relationen zusammengetragen und zurückgeliefert,​ der Trigger liegt auf der **Abfrage** der Sicht   * Bei der Abfrage einer **View** durch den **Client** werden die geforderten Daten aus den einzelnen Tabellen und Relationen zusammengetragen und zurückgeliefert,​ der Trigger liegt auf der **Abfrage** der Sicht
   * Beim Abruf der **Materialized View** werden die Daten aus dem Cache zurückgeliefert. Der Cache wird erst durch den **Server** aktualisiert,​ sobald **Daten geändert** werden (Update). Die Last entsteht ausschliesslich bei Schreiboperationen.   * Beim Abruf der **Materialized View** werden die Daten aus dem Cache zurückgeliefert. Der Cache wird erst durch den **Server** aktualisiert,​ sobald **Daten geändert** werden (Update). Die Last entsteht ausschliesslich bei Schreiboperationen.
 +
 +Um eine Materialized View anzulegen braucht man nur das entsprechende Schlüsselwort voranzustellen,​ z.B.:
 +
 +<code sql>
 +  create materialized view recentOrders as ...
 +</​code>​
 +
 +danach kann man die View durch beliebige Trigger auf involvierte Relationen aktualisieren
 +
 +<code sql>
 +  CREATE TRIGGER materialize after insert or update or delete on orders EXECUTE PROCEDURE materialize();​
 +</​code>​
views.1452264497.txt.gz · Zuletzt geändert: 2016/01/08 00:00 (Externe Bearbeitung)