1 / 7

OQL-Anfragen (1)

OQL-Anfragen (1). Alle Punkte, die auf der Null-Ebene liegen: select struct (ex : x, ey : y) from alle Punkte where z = 0 Rückgabetyp: bag<struct<ex:float, ey:float>> Alle Kanten, die zu Flächen mit mindestens vier Kanten gehören:

galeno
Download Presentation

OQL-Anfragen (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OQL-Anfragen (1) • Alle Punkte, die auf der Null-Ebene liegen: select struct (ex : x, ey : y) from allePunktewherez = 0 Rückgabetyp: bag<struct<ex:float, ey:float>> • Alle Kanten, die zu Flächen mit mindestens vier Kanten gehören: select struct (kp1 : k.p1, kp2 : k.p2)fromfin alleFlächen, k inf.kanten wherecount (f.kanten) >= 4 Rückgabetyp: bag<struct<kp1:Punkt, kp2:Punkt>> (Impliziter Join!)

  2. OQL-Anfragen (2) • Dieselbe Anfrage, aber gruppiert nach Flächen: select struct (fläche: f.fName, punkte: (selectstruct (kp1 : p1, kp2 : p2) fromf.kanten))from f in alleFlächen, k in f.kanten wherecount (f.kanten) >= 4 Rückgabetyp: bag<bag<struct< fläche:string, punkte:bag<struct<kp1:Punkt,kp2:Punkt>>> • Beachte: Gruppierung ohne group by

  3. OQL-Anfragen (3) • Ergebnis kann Resultat von Operatoraufrufen enthalten z.B.: select volumen()from alleQuader • Länge aller Kanten von großen Flächen:select k.länge from f in alleFlächen, k in f.kanten where f.fläche > 100.0 • Vielflächner mit großen Flächen:select vName from alleVielflächner where for all f in flächen : f.fläche() > 100.0

  4. OQL-Anfragen (4) • Aggregierung nach Gruppen, z.B. zuerst Gruppierung der Quader nach Oberfläche, dann Berechnung des mittleren Volumens über alle Quader mit dieser Oberfläche, dies aber nur für Oberflächen über 20: select struct (ofläche, dvolumen: avg( volumen() )from alleQuader group byofläche : oberflächehavingoberfläche >= 20.0 Rückgabetyp:bag<struct<ofläche:float, dvolumen:float>>

  5. OQL-Anfragen (5) • Auch die Sortierungsklausel existiert in OQL, z.B.: select  from alleQuader order by oberflächedesc, volumen()asc • Es kann nach mehreren Attributen bzw. Methodenresultaten sortiert werden • Aufsteigend: asc (Voreinstellung) • Absteigend: desc

  6. OQL-Anfragen (6) • Gesamtzahl aller Kanten, die aus dem Nullpunkt entspringen : count( selectfrom alleKantenwhere p1.x = 0.0and p1.y = 0.0 and p1.z = 0.0) • Ergebnistyp: unsigned long • Bemerkung: OQL erlaubt (als Tribut an SQL) auch Syntax selectcount ()from alleKanten wherep1.x = 0.0 andp1.y = 0.0 andp1.z = 0.0)

  7. OQL-Anfragen (7) • Liste aller Flächen mit Umfang über 1000: select ffrom f in alleFlächenwhere 1000 < sum( select k.längefrom k in f.kanten) • Ergebnistyp: bag<Fläche>

More Related