{"id":55000317,"date":"2016-08-01T00:00:00","date_gmt":"2020-01-24T15:59:35","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=317"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Unterabfragen_als_Feldinhalt","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html","title":{"rendered":"Unterabfragen als Feldinhalt"},"content":{"rendered":"<p class='introduction'>Dass gespeicherte Abfragen selbst wieder als Pseudotabellen in andere Abfragen integriert und dort mit anderen Tabellen verkn&uuml;pft werden k&ouml;nnen, d&uuml;rfte Ihnen bekannt sein. Weniger verbreitet jedoch sind jene Abfragen, die ungespeichert als SQL-Ausdruck zur Berechnung von Feldinhalten und Bedingungen dienen. Diese mit den Schlagw&ouml;rtern Unterabfrage oder Subselect bezeichneten Ausdr&uuml;cke sind Gegenstand dieses Beitrags.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1604_Unterabfragen.accdb<\/b><\/p>\n<h2>Unterabfragen, Subselects<\/h2>\n<p>Eine <b>Unterabfrage<\/b> (engl. <b>Subselect<\/b>)  ist nichts weiter, als eine vollst&auml;ndige in SQL geschriebene Auswahlabfrage, deren Ergebnis oder Ergebnisse zur Anzeige eines einzelnen Felds oder zur Bestimmung eines Auswahlkriteriums in einer anderen Abfrage dienen. Im Folgenden verwenden wir einige Beispiele, um verschiedene M&ouml;glichkeiten im Umgang mit diesen Unterabfragen zu demonstrieren.<\/p>\n<p>Grundlage f&uuml;r die Beispieldatenbank ist das Datenmodell in Bild 1, welches Kunden und deren Bestellungen verwaltet. Neben den Kundendaten, bestehend aus der Tabelle <b>tblKunden<\/b> und deren Nachschlagetabellen <b>tblAnreden<\/b>, <b>tblOrte<\/b> und <b>tblLaender<\/b>, sind die Bestellungen in der Tabelle <b>tblBestellungen<\/b> festgehalten und zu jeder Bestellposition jeweils ein Datensatz in der Tabelle <b>tblBestelldetails<\/b>. Die Artikel jeder Bestellposition kommen schlie&szlig;lich aus der Nachschlagetabelle <b>tblArtikel<\/b>.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Datenmodell.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Datenmodell.png\" alt=\"Beziehungen zwischen Kunden und deren Bestellungen im Datenmodell der Beispieldatenbank\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Beziehungen zwischen Kunden und deren Bestellungen im Datenmodell der Beispieldatenbank<\/p>\n<h2>Auswertungen &uuml;ber Subselects<\/h2>\n<p>Eine Anforderung an eine Auswertung k&ouml;nnte nun sein, die Anzahl von Bestellungen in einer &uuml;bersicht darzustellen, die jeder Kunde get&auml;tigt hatte. Die daf&uuml;r geeignete Abfrage w&auml;re eine <b>Gruppierungs<\/b>&#8211; beziehungsweise <b>Aggregatabfrage<\/b>. Bild 2 zeigt, wie Sie diese gestalten k&ouml;nnten. Aus der Kundentabelle entnehmen wir lediglich die <b>ID<\/b> der Datens&auml;tze und den vollst&auml;ndigen Namen <b>Kunde<\/b>, welcher sich aus <b>Nachname<\/b> und <b>Vorname<\/b> zusammensetzt:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Abfrage1.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Abfrage1.png\" alt=\"Die Abfrage gibt nur jene Kunden aus, die mindestens einmal bestellten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Die Abfrage gibt nur jene Kunden aus, die mindestens einmal bestellten<\/p>\n<pre>...Nachname & ', ' & Vorname AS Kunde<\/pre>\n<p>Um die Anzahl von Bestellungen zu jedem Kunden zu ermitteln, wird die Tabelle <b>tblBestellungen<\/b> mit der Kundentabelle 1:1 verkn&uuml;pft. Die Berechnung der Anzahl erfordert als Aggregat, dass Sie aus der Abfrage eine <b>Gruppierungsabfrage<\/b> machen, indem Sie das Summensymbol <b>?<\/b> im Entwurfs-Ribbon anklicken. F&uuml;r die nun eingeblendete Zeile Funktion geben Sie bei <b>ID<\/b> und <b>Kunde<\/b> die <b>Gruppierung<\/b> an, und beim Feld  <b>Anzahl Bestellungen<\/b> die <b>ID<\/b> von <b>tblBestellungen<\/b>, sowie die Funktion <b>Anzahl<\/b>. Die Bedingung, dass diese Anzahl gr&ouml;&szlig;er, als 0, sein muss, ist eigentlich &uuml;berfl&uuml;ssig, denn durch die 1:1-Verkn&uuml;pfung werden ohnehin alle Datens&auml;tze ausgefiltert, die keinen Bezug zwischen den Tabellen besitzen.<\/p>\n<p>Im Ergebnis haben Sie nun alle Kunden, die &uuml;berhaupt etwas bestellten und die Gesamtzahl ihrer Bestellungen. Sie k&ouml;nnten noch nach diesem Feld absteigend sortieren, um die Top-Besteller zu ermitteln.<\/p>\n<p>Diese Auswertung l&auml;sst sich aber auch anders realisieren. Statt die Tabelle <b>tblBestellungen<\/b> direkt in den Abfrageentwurf zu ziehen, wird sie in einen <b>SELECT<\/b>-Ausdruck als <b>Unterabfrage<\/b> integriert, der das Ausgabefeld <b>Anzahl Bestellungen<\/b> speist. Wie das aussieht, zeigt Bild 3. Hier wird bereits deutlich, dass solche Abfragen in der Entwurfsansicht etwas schwieriger zu handeln sind, da die SQL-Ausdr&uuml;cke f&uuml;r die Unterabfragen relativ lang ausfallen und damit die Spaltenbreite dieser berechneten Felder ziemlich breit aufgezogen werden m&uuml;sste. Entweder Sie verwenden dann die <b>Zoom<\/b>-Funktion f&uuml;r das Feld (rechter Mausklick), oder Sie schalten besser gleich in die <b>SQL-Ansicht<\/b>, die den Code von Listing 1 zutage f&ouml;rdert. Das Ergebnisfeld <b>Anzahl Bestellungen<\/b> ist hier mit <b>n<\/b> bezeichnet. Es errechnet sich &uuml;ber die Aggregatfunktion <b>COUNT<\/b>(*) auf die Datens&auml;tze von <b>tblBestellungen<\/b>. Da wir ja aber nicht f&uuml;r jeden Kunden die Gesamtzahl <b>aller<\/b> Bestellungen ausgeben m&ouml;chten, sondern nur die Zahl <b>seiner<\/b> Bestellungen, braucht es noch eine zus&auml;tzliche <b>WHERE<\/b>-Bedingung. Pro Kundendatensatz m&uuml;ssen die Bestellungen gem&auml;&szlig; seiner <b>ID<\/b> gefiltert werden.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Abfrage2.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Abfrage2.png\" alt=\"Auch hier zeigen sich nur Kunden mit Bestellungen, jedoch mit Unterabfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Auch hier zeigen sich nur Kunden mit Bestellungen, jedoch mit Unterabfrage<\/p>\n<p>Hier kommt nun ein Trick ins Spiel: Die Tabelle <b>tblBestellungen<\/b> wird in den <b>Alias<\/b>-Namen <b>TMP<\/b> umbenannt. Auf ihr Feld <b>KundeID<\/b> k&ouml;nnen Sie somit &uuml;ber <b>TMP.KundeID<\/b> Bezug nehmen. Ihr Wert muss mit der <b>ID<\/b> der Tabelle <b>tblKunden<\/b> &uuml;bereinstimmen, damit die Filterung greift. Also setzen Sie diese Bedingung ein:<\/p>\n<pre>...WHERE TMP.KundeID = tblKunden.ID<\/pre>\n<p>Das Ergebnis stimmt mit dem der Abfrage aus Bild 2 &uuml;berein.<\/p>\n<p>Man k&ouml;nnte meinen, dass die Performance dieser Abfrage darunter litte, dass f&uuml;r jeden Kundendatensatz die Unterabfrage zur Anzahlberechnung erneut ausgef&uuml;hrt werden muss. Tats&auml;chlich unterscheidet sie sich nicht nennenswert von der gruppierten Abfrage oben, denn auch bei Aggregatabfragen muss intern f&uuml;r jeden Datensatz eine eigene neue Berechnung durchgef&uuml;hrt werden.<\/p>\n<h2>Nummerieren<\/h2>\n<p>Der prominenteste Vertreter von Unterabfragen ist die L&ouml;sung zum Durchnummerieren der ausgegebenen Datens&auml;tze. Sie m&ouml;chten etwa alle Kunden der Datenbank ausgeben und die Datens&auml;tze fortlaufend nummerieren. Unter <b>Excel<\/b> w&auml;re das ein leichtes Unterfangen. Sie f&uuml;gten hier einfach ganz vorn eine zus&auml;tzliche Spalte ein, schrieben eine <b>1<\/b> und eine <b>2<\/b> in die beiden ersten Zellen hinein und z&ouml;gen die Spalte nach Markierung dieser zwei Zellen &uuml;ber die ganze Kundentabelle auf.<\/p>\n<p>Leider gestaltet sich das unter Access weitaus schwieriger. Eine Nummerierungsfunktion fehlt hier.<\/p>\n<p>&uuml;ber eine gewiefte Unterabfrage l&auml;sst sich die Nummerierung dennoch erreichen. Voraussetzung allerdings ist, dass die Tabelle einen <b>Prim&auml;rschl&uuml;ssel<\/b>, wie die <b>Autowert-ID<\/b> von <b>tblKunden<\/b>, aufweist. Ohne diesen w&auml;re die Sache nur &uuml;ber eine gar nicht so einfache VBA-Funktion zu l&ouml;sen.<\/p>\n<p>Das Feld <b>Pos<\/b> in Bild 4 stellt das Nummernfeld dar. Es berechnet sich &uuml;ber eine Unterabfrage, die in Listing 2 besser zu &uuml;berblicken ist. Zun&auml;chst ermittelt <b>COUNT<\/b> die Anzahl der Datens&auml;tze der Tabelle <b>tblKunden<\/b>. H&auml;tte sie 9.000 Datens&auml;tze, so g&auml;be <b>Pos<\/b> in jeder Zeile eben diesen Wert aus, was nicht w&uuml;nschenswert ist. Eine zus&auml;tzliche Bedingung &auml;ndert aber die Situation.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/qry_Nummerierung.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/qry_Nummerierung.png\" alt=\"Durchnummerieren der Kunden &uuml;ber Unterabfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Durchnummerieren der Kunden &uuml;ber Unterabfrage<\/p>\n<pre>SELECT 1+(SELECT COUNT(*) FROM tblKunden AS TMP WHERE TMP.ID<tblKunden.ID)\r\n   AS Pos, \r\ntblKunden.* FROM tblKunden;<\/pre>\n<p class='imagetext'>Listing 2: SQL-Code der Abfrage zum Durchnummerieren der Kunden<\/p>\n<p>Auch hier wird die Tabelle intern &uuml;ber den <b>Alias<\/b> in <b>TMP<\/b> umbenannt. Anschlie&szlig;end filtert die <b>WHERE<\/b>-Bedingung diese <b>TMP<\/b>-Tabelle so, dass nur jene Datens&auml;tze ber&uuml;cksichtigt werden, deren <b>ID<\/b> (<b>Autowert<\/b>!) kleiner ist, als die aktuell im Datensatz stehende <b>ID<\/b> der  angezeigten <b>tblKunden<\/b>:<\/p>\n<pre>...WHERE TMP.ID < tblKunden.ID<\/pre>\n<p>Also filtert die Abfrage zu jedem Kundendatensatz die virtuelle Kundentabelle (<b>TMP<\/b>) so, dass ihre Datensatzzahl der entspricht, die bis zu dieser Position erreicht wurde. Diese Anzahl wird in <b>Pos<\/b> als Nummerierung zweckentfremdet.<\/p>\n<p>Eine absteigende Nummerierung erreichen Sie, indem Sie statt des Kleiner-Zeichens das Gr&ouml;&szlig;er-Zeichen  in die Bedingung einsetzen. Jede Tabelle mit einem Autowert l&auml;sst sich auf diese Weise durchnummerieren. Sp&auml;ter zeigen wir noch ein Beispiel, wie sich die Artikel jeder Bestellung durchnummerieren lassen. Die Unterabfrage dazu f&auml;llt etwas umfangreicher aus, weil sie noch weitere Bedingungen enthalten muss.<\/p>\n<h2>Unterabfragen f&uuml;r Bedingungen<\/h2>\n<p>Eine Unterabfrage gibt einen oder mehrere Datens&auml;tze zur&uuml;ck. Soll ein Feldwert ermittelt werden, so darf die Zahl dieser Datens&auml;tze naturgem&auml;&szlig; nicht gr&ouml;&szlig;er sein, als 1. Schlie&szlig;lich kann eine Feldzelle ja nicht mehr anzeigen, als einen Wert. Die Aggregatfunktion <b>COUNT<\/b> etwa garantiert dies, ebenso, wie <b>FIRST<\/b> (<b>Erster Wert<\/b>) oder <b>LAST<\/b> <b>(Letzter Wert<\/b>) oder <b>AVG<\/b> (<b>Mittelwert<\/b>). Verwenden Sie hier Unterabfragen, die mehrere Datens&auml;tze zur&uuml;ckliefern, so wird Access bereits beim Abspeichern der Abfrage meckern und Sie darauf aufmerksam machen, dass eine solche Unterabfrage nur einen Wert zur&uuml;ckgeben darf.<\/p>\n<p>Anders bei Unterabfragen, die f&uuml;r Bedingungen benutzt werden. Als Beispiel m&ouml;chten wir alle Kunden ausgeben, die irgendwann Bestellungen t&auml;tigten. Das Kriterium daf&uuml;r ist, dass ihre Kunden-<b>ID<\/b> in der Tabelle <b>tblBestellungen<\/b> irgendwo auftaucht. Die Abfrage in Bild 5 baut auf der fr&uuml;heren auf, in der die Gesamtzahl aller Bestellungen eines Kunden bestimmt wurde. Auch hier findet f&uuml;r diese Feldberechnung eine Unterabfrage Anwendung. Der Nachteil dieser L&ouml;sung besteht darin, dass <b>alle<\/b> Kunden ausgegeben werden, also auch jene, bei denen <b>COUNT<\/b> den Wert <b>0<\/b> zur&uuml;ckgibt. Nat&uuml;rlich k&ouml;nnte man als Kriterium f&uuml;r dieses Feld den Ausdruck <b>>0<\/b> bestimmen. Die Abfrage m&uuml;sste dann f&uuml;r jeden Kunden seine Bestellzahl ermitteln und aus dem Ergebnis all jene streichen, deren Wert <b>0<\/b> betr&uuml;ge. Eine Vorfilterung macht diese Abfrage aber schneller.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Abfrage3.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Abfrage3.png\" alt=\"Alle Kunden mit Bestellungen &uuml;ber IN-Statement auf tblBestellungen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Alle Kunden mit Bestellungen &uuml;ber IN-Statement auf tblBestellungen<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000317\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000317?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000317\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"349bc4cffe\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dass gespeicherte Abfragen selbst wieder als Pseudotabellen in andere Abfragen integriert und dort mit anderen Tabellen verkn&uuml;pft werden k&ouml;nnen, d&uuml;rfte Ihnen bekannt sein. Weniger verbreitet jedoch sind jene Abfragen, die ungespeichert als SQL-Ausdruck zur Berechnung von Feldinhalten und Bedingungen dienen. Diese mit den Schlagw&ouml;rtern Unterabfrage oder Subselect bezeichneten Ausdr&uuml;cke sind Gegenstand dieses Beitrags.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662016,66042016,44000006],"tags":[],"class_list":["post-55000317","post","type-post","status-publish","format-standard","hentry","category-662016","category-66042016","category-Abfragen_fuer_die_Datenauswahl"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unterabfragen als Feldinhalt - Access [basics]<\/title>\n<meta name=\"description\" content=\"Dass gespeicherte Abfragen selbst wieder als Pseudotabellen in andere Abfragen integriert und dort mit anderen Tabellen verkn\u00fcpft werden k\u00f6nnen, d\u00fcrfte Ihnen bekannt sein. Weniger verbreitet jedoch sind jene Abfragen, die ungespeichert als SQL-Ausdruck zur Berechnung von Feldinhalten und Bedingungen dienen. Diese mit den Schlagw\u00f6rtern Unterabfrage oder Subselect bezeichneten Ausdr\u00fccke sind Gegenstand dieses Beitrags.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unterabfragen als Feldinhalt - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Dass gespeicherte Abfragen selbst wieder als Pseudotabellen in andere Abfragen integriert und dort mit anderen Tabellen verkn\u00fcpft werden k\u00f6nnen, d\u00fcrfte Ihnen bekannt sein. Weniger verbreitet jedoch sind jene Abfragen, die ungespeichert als SQL-Ausdruck zur Berechnung von Feldinhalten und Bedingungen dienen. Diese mit den Schlagw\u00f6rtern Unterabfrage oder Subselect bezeichneten Ausdr\u00fccke sind Gegenstand dieses Beitrags.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/Datenmodell.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"13\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/Datenmodell.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html\",\"name\":\"Unterabfragen als Feldinhalt - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:35+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Dass gespeicherte Abfragen selbst wieder als Pseudotabellen in andere Abfragen integriert und dort mit anderen Tabellen verkn\\u00fcpft werden k\\u00f6nnen, d\\u00fcrfte Ihnen bekannt sein. Weniger verbreitet jedoch sind jene Abfragen, die ungespeichert als SQL-Ausdruck zur Berechnung von Feldinhalten und Bedingungen dienen. Diese mit den Schlagw\\u00f6rtern Unterabfrage oder Subselect bezeichneten Ausdr\\u00fccke sind Gegenstand dieses Beitrags.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Unterabfragen_als_Feldinhalt.html\",\"name\":\"Unterabfragen als Feldinhalt\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000317"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000317\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}