-
Hallo Forum,
anbei ein cleveres SQL-Statement, das ich bei Birgitta Hauser - an dieser Stelle vielen Dank an Dich - gelernt habe. Es lohnt sich wirklich, bei ihr in den Kurs zu gehen.
PHP-Code:
select XMLSERIALIZE( XMLELEMENT(NAME "data", XMLAGG( XMLROW( trim(kndnr) as "nummer", trim(name) as "name", trim(land) as "land", trim(plz) as "plz", trim(ort) as "ort", trim(str) as "strasse", umsatz as "umsatz" option row "item") ) ) as CLOB(2G) INCLUDING XMLDECLARATION) AS XML_DOCUMENT FROM ( select * from myapp.kndstap where kndnr = 1 ) x;
Herzliche Grüße
Rainer
-
Und wie gestalte ich ein geschachteltes XML-Dokument, dass Kopf- und Positionsdaten enthält?
Und zu den Positionsdaten ggf. Preis- und Rabattinformationen?
Das gibt das Handbuch leider auch nicht her.
Die Beispiele behandeln immer nur 1-stufige Hierarchien.
Hat jemand dazu mal ein Beispiel?
ORDER
- KUNDE NAME = "ABCD"
- - ARTIKEL NAME = "TEIL 1"
- - - PREIS WERT = "10,00"
- - - PREIS RABATT = "-5%"
- - ARTIKEL NAME = "TEIL 2"
- - - PREIS WERT = "9,95"
- - ARTIKEL NAME = "TEIL 3"
- - - PREIS WERT = "12,50"
- - - PREIS NACHLASS = "2,45"
-
 Zitat von Fuerchau
Und wie gestalte ich ein geschachteltes XML-Dokument, dass Kopf- und Positionsdaten enthält?
Und zu den Positionsdaten ggf. Preis- und Rabattinformationen?
Das gibt das Handbuch leider auch nicht her.
Die Beispiele behandeln immer nur 1-stufige Hierarchien.
Hat jemand dazu mal ein Beispiel?
Die Kunst ist die Übersetzung von der relationalen Form der Datenbank in die hierarchische Form des XML-Dokuments und umgekehrt.
Man kann ein XML-Dokument durchaus mit mehreren Common Table Expressions, deren Ergebnisse man wieder miteinander verknüpft, sortiert und weiter aggregiert aufbauen.
Wenn man es richtig macht bleiben auch komplexe SQL-Statements zur Aufbereitung von XML-Dokumenten immer noch lesbar.
Das kann man übrigens bei mir in der Schulung lernen.
Birgitta
-
xml sind hierarchische Dokumente und SQL ist eine Abfragesprache für relationale Daten. (in Worten: Punkt) Sicher kann man da Schulungen machen, wie man Probleme mit untauglichen Mitteln löst, man könnte es aber auch bleiben lassen...
D*B,
der allen viel Spaß wünscht, mit dem Traktor ins Theater zu fahren!
-
 Zitat von BenderD
xml sind hierarchische Dokumente und SQL ist eine Abfragesprache für relationale Daten. (in Worten: Punkt) Sicher kann man da Schulungen machen, wie man Probleme mit untauglichen Mitteln löst, man könnte es aber auch bleiben lassen...
D*B,
der allen viel Spaß wünscht, mit dem Traktor ins Theater zu fahren!
Ich freue mich an dieser Stelle auf auf ein Beispiel mit tauglichen Mitteln
Viele Grüße
Rainer
-
... jede OO Sprache löst das mit adäquaten Mitteln auf einfachste Weise!
D*B
-
 Zitat von BenderD
... jede OO Sprache löst das mit adäquaten Mitteln auf einfachste Weise!
D*B
Ach Dieter, wo ist denn jetzt das Beispiel?
-
Hallo Dieter,
würde das in Java so aussehen oder liege ich hier falsch. Statt dem Microsoft Access Driver müsste man hier den DB/2 JDBC-Driver einsetzen.
PHP-Code:
import java.io.StringWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document; import org.w3c.dom.Element;
public class Main {
public static void main(String args[]) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); Element results = doc.createElement("Results"); doc.appendChild(results);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager .getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/access.mdb"); ResultSet rs = con.createStatement().executeQuery("select * from product");
ResultSetMetaData rsmd = rs.getMetaData(); int colCount = rsmd.getColumnCount();
while (rs.next()) { Element row = doc.createElement("Row"); results.appendChild(row); for (int i = 1; i <= colCount; i++) { String columnName = rsmd.getColumnName(i); Object value = rs.getObject(i); Element node = doc.createElement(columnName); node.appendChild(doc.createTextNode(value.toString())); row.appendChild(node); } } DOMSource domSource = new DOMSource(doc); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1"); StringWriter sw = new StringWriter(); StreamResult sr = new StreamResult(sw); transformer.transform(domSource, sr);
System.out.println(sw.toString());
con.close(); rs.close(); } }
-
Wie ich das mit einer OO-Sprache löse ist mir bekannt, da ich dies schon mache. Wie ich das mit Einzelaufrufen (in einem anderen Thread) als Prozedur löse ebenso.
Ich möchte es eben in SQL sehen, gerade wegen der Übersetzung eines relationalen Resultsets in ein hierarchisches XML (was ja laut Birgitta total einfach ist), zumal ich ja Kopfdaten, Positionsdaten und weitere Informationen in SQL als 1-dimensionales Result erhalte.
Wenn ich für meine Tipps und Tricks ständig nur Schulungen anbieten würde, wäre das Forum wohl nicht das, was es derzeit ist.
Similar Threads
-
By oulbrich in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 09-03-17, 09:43
-
By Robi in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 06-04-16, 16:04
-
By wti in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 11-09-15, 12:47
-
By Burgy Zapp in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 09-02-02, 20:58
-
By Ursus in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 09-08-01, 07:59
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks