{"id":55000595,"date":"2023-10-01T00:00:00","date_gmt":"2023-10-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/595"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Abfragen_basics_Daten_zusammenfassen_mit_UNION","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html","title":{"rendered":"Abfragen [basics]: Daten zusammenfassen mit UNION"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/2d36addfbf8b4fa9bd0cf3d5d898c164\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class='introduction'>Die meisten Abfragetypen unter Access lassen sich in der Entwurfsansicht zusammenstellen. Einer der Exoten, f&uuml;r die der Entwurf keine Funktion bietet, ist die UNION-Abfrage. Warum ist das so Weil UNION-Abfragen gleich mehrere Abfragen miteinander verbinden, und das l&auml;sst sich in der Entwurfsansicht schlicht nicht abbilden. Allerdings gibt es neben der Entwurfsansicht und der Datenblattansicht noch eine dritte Ansicht f&uuml;r Abfragen, n&auml;mlich die SQL-Ansicht. Diese l&auml;sst sich zu Lernzwecken &uuml;brigens auch nutzen, um einmal den SQL-Code herk&ouml;mmlicher Abfragen zu untersuchen. In diesem Artikel geht es allerdings erst einmal um die UNION-Abfrage: Sie verbindet zwei oder mehr Abfragen mit einander, wobei f&uuml;r diese Abfragen bestimmte Regel gelten &#8211; sie m&uuml;ssen zum Beispiel die gleiche Anzahl Felder haben. Alles Wichtige zu UNION-Abfragen liefern die folgenden Seiten.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>AbfragenBasics_Unionabfragen.accdb<\/b>.<\/p>\n<h2>Einsatzzwecke von UNION-Tabellen<\/h2>\n<p><b>UNION<\/b>-Tabellen setzen wir immer dann ein, wenn wir die Daten aus mehr als einer Tabelle in einer Abfrage zusammenf&uuml;hren wollen. Vielleicht denkst Du jetzt, dass man das ja auch ohne <b>UNION<\/b>-Abfragen machen kann &#8211; zum Beispiel, indem man die Kunden-Tabelle und die Anreden-Tabelle in eine Abfrage zieht, um die Kunden samt Anreden darzustellen.<\/p>\n<p>Das ist jedoch nicht der Fall, f&uuml;r den <b>UNION<\/b>-Tabellen vorgesehen sind: Sie sollen nicht die Daten verkn&uuml;pfter Tabellen in einem Datensatz darstellen, sondern sie sollen gleichartige Daten aus verschiedenen Tabellen zusammenf&uuml;hren, und zwar so, dass im einfachsten Fall alle Datens&auml;tze der ersten Tabelle und alle Datens&auml;tze der zweiten Tabelle untereinander dargestellt werden.<\/p>\n<p>Wozu sollte man das nutzen Macht es nicht viel mehr Sinn, solche Daten direkt in einer einzigen Tabelle zu speichern, statt diese auf zwei oder mehr Tabellen zu verteilen und diese anschlie&szlig;end mit einer UNION-Abfrage wieder zusammenzuf&uuml;hren Nein, denn wir beziehen uns hier auf solche F&auml;lle, wo die Daten aus gutem Grund auf mehrere Tabellen aufgeteilt wurden. Zum Beispiel kann es sein, dass wir eine Datenbank verwenden, um Transaktionen auf einer Handelsplattform zu verwalten. Dort gibt es zu jeder Transaktion einen K&auml;ufer und einen Verk&auml;ufer. Diese sind in verschiedenen Tabellen namens <b>tblKaeufer <\/b>und <b>tblVerkaeufer <\/b>gespeichert (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_595_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_595_001.png\" alt=\"Formular-Entwurf unseres Beispielformulars\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Formular-Entwurf unseres Beispielformulars<\/p>\n<p>Das kann man so machen, gerade wenn man aus Performancegr&uuml;nden nicht alle Daten in einer Tabelle speichern m&ouml;chte. Nun gibt es jedoch F&auml;lle, in denen man dennoch bestimmte Daten von K&auml;ufern und Verk&auml;ufern in einer einzigen Abfrage sehen m&ouml;chte &#8211; beispielsweise, um allen eine Information &uuml;ber eine neue Funktion der Handelsplattform zu &uuml;bermitteln.<\/p>\n<p>Genau das ist der Einsatzzweck f&uuml;r eine UNION-Abfrage.<\/p>\n<h2>SQL-Ansicht aktivieren<\/h2>\n<p>Wenn wir eine neue, leere Abfrage erstellt haben, k&ouml;nnen wir von der Entwurfsansicht aus zur SQL-Ansicht wechseln. Dazu klicken wir oben links im Ribbon-Tab <b>Abfrageentwurf <\/b>auf die Schaltfl&auml;che <b>SQL<\/b> (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_595_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_595_002.png\" alt=\"Wechseln zur SQL-Ansicht einer Abfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Wechseln zur SQL-Ansicht einer Abfrage<\/p>\n<p>Damit aktivieren die SQL-Ansicht, die ziemlich karg daherkommt (siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_595_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_595_003.png\" alt=\"SQL-Ansicht einer Abfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: SQL-Ansicht einer Abfrage<\/p>\n<p>Hier w&uuml;rden wir nun normalerweise die bereits vorgegebene <b>SELECT<\/b>-Anweisung erg&auml;nzen. Allerdings m&uuml;ssten wir nun die Liste aller Felder, die Quelltabellen und gegebenenfalls noch weitere Daten eintragen. Einen Gro&szlig;teil davon k&ouml;nnen wir uns sparen.<\/p>\n<h2>UNION-Abfrage vorbereiten<\/h2>\n<p>Dazu wechseln wir zur&uuml;ck zur Entwurfsansicht und ziehen dort die erste der beiden Tabellen, die als Quelle der <b>UNION<\/b>-Abfrage dienen sollen, in den Entwurf. Aus dieser ziehen wir alle Felder, die in der <b>UNION<\/b>-Abfrage landen sollen, in das Entwurfsraster. Au&szlig;erdem speichern wir die Abfrage gleich unter dem Namen <b>qryUNIONKaeuferVerkaeufer<\/b> (siehe Bild 4).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_595_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_595_004.png\" alt=\"Vorbereiten der UNION-Abfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Vorbereiten der UNION-Abfrage<\/p>\n<p>Wechseln wir nun erneut in die SQL-Ansicht der Abfrage, finden wir die <b>SELECT<\/b>-Abfrage aus Bild 5 vor.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_595_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_595_005.png\" alt=\"Erster Teil der UNION-Abfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Erster Teil der UNION-Abfrage<\/p>\n<p>Hier werden nach dem <b>SELECT<\/b>-Schl&uuml;sselwort alle Felder samt Tabelle wie <b>tblKaeufer.KaeuferID <\/b>aufgelistet, dann folgen das Schl&uuml;sselwort <b>FROM <\/b>und der Name der Quelltabelle f&uuml;r diese Abfrage.<\/p>\n<p>Das ist eine herk&ouml;mmliche Abfrage, und um diese nun in eine <b>UNION<\/b>-Abfrage zu verwandeln, ben&ouml;tigen wir zuerst noch die gleiche Abfrage f&uuml;r die Tabelle <b>tblVerkaeufer<\/b>. Wir k&ouml;nnen nun den Code der ersten SQL-Abfrage kopieren, eine neue Abfrage mit der Tabelle <b>tblVerkaeufer <\/b>erstellen, dort in die SQL-Ansicht wechseln und dann die erste Abfrage an die neue Abfrage anh&auml;ngen &#8211; getrennt vom Schl&uuml;sselwort <b>UNION<\/b>.<\/p>\n<p>Da beide Tabellen gleich aufgebaut sind, k&ouml;nnen wir aber auch den Code der hier vorliegenden Abfrage einfach in die Zwischenablage kopieren, das Schl&uuml;sselwort <b>UNION <\/b>anh&auml;ngen und die Abfrage ein zweites Mal hinter <b>UNION <\/b>einf&uuml;gen.<\/p>\n<p>Gegebenenfalls muss noch das Semikolon hinter der ersten Abfrage entfernt werden. Dann brauchen wir nur noch in der eingef&uuml;gten Version alle Vorkommen des Tabellennamens <b>tblKaeufer <\/b>durch <b>tblVerkaeufer <\/b>zu ersetzen. Au&szlig;erdem m&uuml;ssen wir im zweiten Teil noch <b>KaeuferID <\/b>durch <b>VerkaeuferID <\/b>ersetzen:<\/p>\n<pre>SELECT tblKaeufer.KaeuferID, tblKaeufer.Vorname,     tblKaeufer.Nachname, tblKaeufer.AnredeID,     tblKaeufer.Strasse, tblKaeufer.PLZ,     tblKaeufer.Ort, tblKaeufer.Land\r\nFROM tblKaeufer\r\nUNION\r\nSELECT tblVerkaeufer.VerkaeuferID, tblVerkaeufer.Vorname,     tblVerkaeufer.Nachname, tblVerkaeufer.AnredeID,     tblVerkaeufer.Strasse, tblVerkaeufer.PLZ,     tblVerkaeufer.Ort, tblVerkaeufer.Land\r\nFROM tblVerkaeufer<\/pre>\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\/55000595\/\">\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\/55000595?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\/55000595\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\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>Die meisten Abfragetypen unter Access lassen sich in der Entwurfsansicht zusammenstellen. Einer der Exoten, f&uuml;r die der Entwurf keine Funktion bietet, ist die UNION-Abfrage. Warum ist das so Weil UNION-Abfragen gleich mehrere Abfragen miteinander verbinden, und das l&auml;sst sich in der Entwurfsansicht schlicht nicht abbilden. Allerdings gibt es neben der Entwurfsansicht und der Datenblattansicht noch eine dritte Ansicht f&uuml;r Abfragen, n&auml;mlich die SQL-Ansicht. Diese l&auml;sst sich zu Lernzwecken &uuml;brigens auch nutzen, um einmal den SQL-Code herk&ouml;mmlicher Abfragen zu untersuchen. In diesem Artikel geht es allerdings erst einmal um die UNION-Abfrage: Sie verbindet zwei oder mehr Abfragen mit einander, wobei f&uuml;r diese Abfragen bestimmte Regel gelten &#8211; sie m&uuml;ssen zum Beispiel die gleiche Anzahl Felder haben. Alles Wichtige zu UNION-Abfragen liefern die folgenden Seiten.<\/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":[662023,66052023,44000006],"tags":[],"class_list":["post-55000595","post","type-post","status-publish","format-standard","hentry","category-662023","category-66052023","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>Abfragen [basics]: Daten zusammenfassen mit UNION - Access [basics]<\/title>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Abfragen [basics]: Daten zusammenfassen mit UNION - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Die meisten Abfragetypen unter Access lassen sich in der Entwurfsansicht zusammenstellen. Einer der Exoten, f&uuml;r die der Entwurf keine Funktion bietet, ist die UNION-Abfrage. Warum ist das so Weil UNION-Abfragen gleich mehrere Abfragen miteinander verbinden, und das l&auml;sst sich in der Entwurfsansicht schlicht nicht abbilden. Allerdings gibt es neben der Entwurfsansicht und der Datenblattansicht noch eine dritte Ansicht f&uuml;r Abfragen, n&auml;mlich die SQL-Ansicht. Diese l&auml;sst sich zu Lernzwecken &uuml;brigens auch nutzen, um einmal den SQL-Code herk&ouml;mmlicher Abfragen zu untersuchen. In diesem Artikel geht es allerdings erst einmal um die UNION-Abfrage: Sie verbindet zwei oder mehr Abfragen mit einander, wobei f&uuml;r diese Abfragen bestimmte Regel gelten - sie m&uuml;ssen zum Beispiel die gleiche Anzahl Felder haben. Alles Wichtige zu UNION-Abfragen liefern die folgenden Seiten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/2d36addfbf8b4fa9bd0cf3d5d898c164\" \/>\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=\"11\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\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"http:\/\/vg07.met.vgwort.de\/na\/2d36addfbf8b4fa9bd0cf3d5d898c164\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html\",\"name\":\"Abfragen [basics]: Daten zusammenfassen mit UNION - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html#primaryimage\"},\"datePublished\":\"2023-10-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.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\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Daten_zusammenfassen_mit_UNION.html\",\"name\":\"Abfragen [basics]: Daten zusammenfassen mit UNION\"}}]},{\"@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\/55000595","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=55000595"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000595\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}