von juetho » Sa, 06.10.2012 10:12
Wie RobertG sagt, wird das kartesische Produkt der beiden Tabellen benötigt: Du brauchst eine Abfrage, bei der
jeder Datensatz der Tabelle a
mit jedem Datensatz der Tabelle b verknüpft wird. Ob das mit der einfachen FROM-Klausel (Roberts Vorschlag) oder einem impliziten CROSS JOIN (DPunchs Vorschlag) oder einem ausdrücklichen CROSS JOIN (mein Vorschlag, den nicht jeder SQL-Dialekt kennt) erfolgt, ist unwichtig und hat mit dem noch bestehenden Problem nichts zu tun. Mehr zu diesen Varianten siehe
SQL: Mehrere Tabellen und den dort folgenden Kapiteln.
Code: Alles auswählen
SELECT a.Name AS Name, a.Raumnr AS Raum, b.Zeit AS Zeit
FROM meineTabelle AS a CROSS JOIN Zeiten AS b
ORDER BY a.Name ASC, b.Zeit ASC
Esiotrot hat geschrieben:... aber leider öffnet sich jedes mal die Fehler meldung, dass mehr als eine Tabelle verwendet wird und die Abfrage daher nicht ausgeführt werden kann.
An welcher Stelle und wie willst du die Abfrage ausführen? Wenn du sie als Abfrage fest speicherst, steht sie als Datenquelle sowohl im Writer (Serienbrief-Funktion) als auch in Base (für Berichte) zur Verfügung.
Die Fehlermeldung kann ich mir allenfalls so erklären: Weil für die Spalten der Ergebnismenge kein Spalten-Alias angegeben ist, glaubt Base, dass die Daten aus zwei verschiedenen Datenquellen geholt werden müssen (obwohl SELECT durch FROM bzw. JOIN die Quellen in einer gemeinsamen Datenquelle verknüpft). Deshalb schlage ich als ersten Versuch vor: Füge Spalten-Aliasse hinzu und greife bei den Ausgabe-Elementen auf diese Namen zu (also auf "Raum" statt "a.Raumnr").
Nebenbei: Die dauernden Gänsefüßchen bei Tabellen- und Spaltennamen stören mich wahnsinnig; sie machen Befehle sehr unübersichtlich (erst recht im Quellcode von Makros). Soweit ich das bisher festgestellt habe, sind sie unnötig, solange die Bezeichner nur die Buchstaben a...z (ohne Unterscheidung von Groß- und Kleinschreibung) und den Unterstrich verwenden. Bei einem Spaltennamen "Raumnr." (mit Punkt) müssen Gänsefüßchen sein, bei "Raumnr" nicht.
Gruß Jürgen
Wie RobertG sagt, wird das kartesische Produkt der beiden Tabellen benötigt: Du brauchst eine Abfrage, bei der [u]jeder[/u] Datensatz der Tabelle a [u]mit jedem[/u] Datensatz der Tabelle b verknüpft wird. Ob das mit der einfachen FROM-Klausel (Roberts Vorschlag) oder einem impliziten CROSS JOIN (DPunchs Vorschlag) oder einem ausdrücklichen CROSS JOIN (mein Vorschlag, den nicht jeder SQL-Dialekt kennt) erfolgt, ist unwichtig und hat mit dem noch bestehenden Problem nichts zu tun. Mehr zu diesen Varianten siehe [url=http://de.wikibooks.org/wiki/Einf%C3%BChrung_in_SQL:_Mehrere_Tabellen]SQL: Mehrere Tabellen[/url] und den dort folgenden Kapiteln.
[code]SELECT a.Name AS Name, a.Raumnr AS Raum, b.Zeit AS Zeit
FROM meineTabelle AS a CROSS JOIN Zeiten AS b
ORDER BY a.Name ASC, b.Zeit ASC[/code]
[quote="Esiotrot"]... aber leider öffnet sich jedes mal die Fehler meldung, dass mehr als eine Tabelle verwendet wird und die Abfrage daher nicht ausgeführt werden kann.[/quote]
An welcher Stelle und wie willst du die Abfrage ausführen? Wenn du sie als Abfrage fest speicherst, steht sie als Datenquelle sowohl im Writer (Serienbrief-Funktion) als auch in Base (für Berichte) zur Verfügung.
Die Fehlermeldung kann ich mir allenfalls so erklären: Weil für die Spalten der Ergebnismenge kein Spalten-Alias angegeben ist, glaubt Base, dass die Daten aus zwei verschiedenen Datenquellen geholt werden müssen (obwohl SELECT durch FROM bzw. JOIN die Quellen in einer gemeinsamen Datenquelle verknüpft). Deshalb schlage ich als ersten Versuch vor: Füge Spalten-Aliasse hinzu und greife bei den Ausgabe-Elementen auf diese Namen zu (also auf "Raum" statt "a.Raumnr").
[i]Nebenbei: Die dauernden Gänsefüßchen bei Tabellen- und Spaltennamen stören mich wahnsinnig; sie machen Befehle sehr unübersichtlich (erst recht im Quellcode von Makros). Soweit ich das bisher festgestellt habe, sind sie unnötig, solange die Bezeichner nur die Buchstaben a...z (ohne Unterscheidung von Groß- und Kleinschreibung) und den Unterstrich verwenden. Bei einem Spaltennamen "Raumnr." (mit Punkt) müssen Gänsefüßchen sein, bei "Raumnr" nicht.[/i]
Gruß Jürgen