Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Moderator: Moderatoren
Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Ich habe folgendes Problem: ich habe in einer Datenbank zwei Tabellen mit den Daten der Schüler von zwei verschiedenen Klassen. Nun muss ich klassenübergreifende Gruppen zusammenstellen, die Namen der Gruppen habe ich in den Tabellen angegeben, der Zelleninhalt ist jeweils '1', wenn der Schüler in der jeweiligen Gruppe ist. Wie kann ich mir nun über eine Abfrage die Namenslisten alphabethisch geordnet anzeigen lassen?
Mein bisheriger Versuch: Ich habe die Spalten Vorname und Nachname aus beiden Tabellen angegeben, ebenso aus beiden Tabellen die Spalte mit dem Gruppennamen, Kriterium '1', mit einer Relation verbunden. Dabei wurden entweder nur die Namen einer Klasse angezeigt oder die der anderen Klasse jeweils ca. 10 mal. Eine Variante war auch, dass Name und Vorname als Spalte kam (mit jeweils den vielfachen Namen der einen Klasse), daneben dann Name 1 und Vorname 1 mit den richtigen Namen der anderen Klasse einfach.
Wer kann mir helfen? In der Hilfe habe ich leider nur einen anderen Fall als Beispiel gefunden. den ich nicht übertragen kann.
Mein bisheriger Versuch: Ich habe die Spalten Vorname und Nachname aus beiden Tabellen angegeben, ebenso aus beiden Tabellen die Spalte mit dem Gruppennamen, Kriterium '1', mit einer Relation verbunden. Dabei wurden entweder nur die Namen einer Klasse angezeigt oder die der anderen Klasse jeweils ca. 10 mal. Eine Variante war auch, dass Name und Vorname als Spalte kam (mit jeweils den vielfachen Namen der einen Klasse), daneben dann Name 1 und Vorname 1 mit den richtigen Namen der anderen Klasse einfach.
Wer kann mir helfen? In der Hilfe habe ich leider nur einen anderen Fall als Beispiel gefunden. den ich nicht übertragen kann.
Mit herzlichem Gruß
Hans-Heinrich
Hans-Heinrich
Hallo hhbreth,
das ließe sich doch mit einer UNION lösen:
Haben Deine Ausgangstabellen unterschiedliche Spaltennamen, dann mußt Du mit Aliasen arbeiten. Dann solltest Du so vorgehen:
Hoffe, es hilft
Viele Grüße
Barlee
das ließe sich doch mit einer UNION lösen:
Code: Alles auswählen
select "Tabelle1"."Vorname","Tabelle1"."Nachname","Tabelle1"."Gruppe"
from Tabelle1
where "Tabelle1"."Gruppe" = 1
union
select "Tabelle2"."Vorname","Tabelle2"."Nachname","Tabelle2"."Gruppe"
from Tabelle2
where "Tabelle2"."Gruppe" = 1
order by "Nachname" asc
Code: Alles auswählen
select "Tabelle1"."Vorname1" Vorname,"Tabelle1"."Nachname1" Nachname ,"Tabelle1"."Gruppe1" GRP
from Tabelle1
where "Tabelle1"."Gruppe1" = 1
union
select "Tabelle2"."Vorname2" Vorname,"Tabelle2"."Nachname2" Nachname,"Tabelle2"."Gruppe2" GRP
from Tabelle2
where "Tabelle2"."Gruppe2" = 1
order by "Nachname" asc
Viele Grüße
Barlee
Hallo Barlee,
vielen Dank für Deine Hilfe. Was Datenbanken angeht, bin ich blutiger Anfänger, weil mir MS Access immer zu kompliziert war. Nun habe ich mich drangewagt, da man ja bei OOo 2.0 schon bei Serienbriefen eine Datenbank braucht. Von daher sind meine Fragen wahrscheinlich für einen gewieften User sehr naiv:
vielen Dank für Deine Hilfe. Was Datenbanken angeht, bin ich blutiger Anfänger, weil mir MS Access immer zu kompliziert war. Nun habe ich mich drangewagt, da man ja bei OOo 2.0 schon bei Serienbriefen eine Datenbank braucht. Von daher sind meine Fragen wahrscheinlich für einen gewieften User sehr naiv:
Was ist eine UNION?Barlee hat geschrieben:das ließe sich doch mit einer UNION lösen:
Das habe ich mit meinen Tabellennamen probiert (ich habe es als Abfrage im SQL-Modus direkt eingegeben) und erhielt beim Speichern folgende Meldung: "Der gesetzte Befehl ist kein SELECT-Befehl. Es sind nur Abfragen erlaubt." und konnte folglich nicht speichern. Wo könnte ich den Code sonst noch eingeben?Barlee hat geschrieben:Code: Alles auswählen
select "Tabelle1"."Vorname","Tabelle1"."Nachname","Tabelle1"."Gruppe" from Tabelle1 where "Tabelle1"."Gruppe" = 1 union select "Tabelle2"."Vorname","Tabelle2"."Nachname","Tabelle2"."Gruppe" from Tabelle2 where "Tabelle2"."Gruppe" = 1 order by "Nachname" asc
Haben sie nicht.Barlee hat geschrieben: Haben Deine Ausgangstabellen unterschiedliche Spaltennamen, ...
Leider nicht. Kann das an meinen Anfängerdummheiten liegen?Barlee hat geschrieben: Hoffe, es hilft
Mit herzlichem Gruß
Hans-Heinrich
Hans-Heinrich
Hallo hhbreth,
kein Problem, ich denke das kann man hinkriegen.
Mittels einer UNION kann man mehrere Abfragen hintereinander ausführen und das Ergebnis als Summe der einzelnen Abfragen anzeigen lassen.
Viel Erfolg!!
Gruß Barlee
kein Problem, ich denke das kann man hinkriegen.
Mittels einer UNION kann man mehrere Abfragen hintereinander ausführen und das Ergebnis als Summe der einzelnen Abfragen anzeigen lassen.
An der Stelle ist schon richtig. Gehe in diesem Fenster mal auf "Bearbeiten" und wähle "SQL-Kommando direkt ausführen". Jetzt sollte beim Ausführen der Abfrage kein Fehler mehr erscheinen.Das habe ich mit meinen Tabellennamen probiert (ich habe es als Abfrage im SQL-Modus direkt eingegeben) und erhielt beim Speichern folgende Meldung: "Der gesetzte Befehl ist kein SELECT-Befehl. Es sind nur Abfragen erlaubt." und konnte folglich nicht speichern. Wo könnte ich den Code sonst noch eingeben?
Viel Erfolg!!
Gruß Barlee
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Ich hatte das gleiche Problem. Sobald ich "SQL-Befehl direkt ausführen" aktiviert hatte, kam bei mir ein neuer Befehl:
"Die Dateninhalte konnten nicht geladen werden:
Tabel not found in statement [...]"
Was kann ich machen?
"Die Dateninhalte konnten nicht geladen werden:
Tabel not found in statement [...]"
Was kann ich machen?
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Hallo seve,
Gruß Barlee
Die Tabellennamen und deren Spalten in Anführungsstriche setzen. Funktionierts dann?Was kann ich machen?
Gruß Barlee
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Ok, mit den Tabellen funktionnierts, wenn ich Anführungszeichen setze.
Kann ich denn auch ein UNION aus zwei Abfragen machen? Ich habs nicht hingekriegt...
Kann ich denn auch ein UNION aus zwei Abfragen machen? Ich habs nicht hingekriegt...
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Hallo seve,
sollte gehen. Bedingung: gleiche Spaltenanzahl & Bezeichner.
Kopier die Abfragen am besten hier rein. Dann kann man näheres sagen ...
Hilfreich ist auch, wenn Du schreibst, was Du probiert hast und welche Fehler(meldung) es gibt.
Gruß Barlee
sollte gehen. Bedingung: gleiche Spaltenanzahl & Bezeichner.
Kopier die Abfragen am besten hier rein. Dann kann man näheres sagen ...
Hilfreich ist auch, wenn Du schreibst, was Du probiert hast und welche Fehler(meldung) es gibt.
Gruß Barlee
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Ich glaube langsam, das Base kriegt keine Abfrage von einer Abfrage hin, wenn die Option "SQL-Kommando direkt ausführen" aktiviert ist. Also geht auch das UNION mit Abfragen nicht, da für UNION ja das Kommando direkt ausgeführt werden muss...
Ich habs jetzt mit einer Unterabfrage gelöst, also eifach den Befehle der beiden Abfragen miteinander verknüpft, so à la
Auf jeden Fall danke
Ich habs jetzt mit einer Unterabfrage gelöst, also eifach den Befehle der beiden Abfragen miteinander verknüpft, so à la
Code: Alles auswählen
SELECT * FROM (SELECT ....) UNION SELECT * FROM (SELECT .....)
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Hallo seve,
mmmhhh, ehrlichgesagt werde ich daraus nicht recht schlau. Ich sehe eine UNION, bestehend aus zwei Abfragen, die wiederum über ein SELECT * abgefragt werden. Nun schreibst Du, dass eine Abfrage von einer Abfrage nicht funktioniert. Was ich auch nicht verstehe: Für die UNION muss die o.g. Option doch aktiviert sein. Insofern widerlegst Du m.E. selbst Deine obige Aussage.
Du hast zwar anscheinend eine Lösung gefunden, jedoch wäre es für Ratsuchende hier im Forum bestimmt interessant, wenn Du mal ein Beispiel bringen könntest, das nicht funktioniert hat. Das könnte man aufgreifen und evtl. Lösungsansätze vermitteln. Vielleicht steht der Eine oder Andere ja einmal vor gleichem Problem ....
Gruß Barlee
glaube langsam... Base kriegt keine Abfrage von einer Abfrage hin, wenn die Option "SQL-Kommando direkt ausführen" aktiviert ist....
... und...Ich habs jetzt mit einer Unterabfrage gelöst...
Code: Alles auswählen
SELECT * FROM (SELECT ....) UNION SELECT * FROM (SELECT .....)
Du hast zwar anscheinend eine Lösung gefunden, jedoch wäre es für Ratsuchende hier im Forum bestimmt interessant, wenn Du mal ein Beispiel bringen könntest, das nicht funktioniert hat. Das könnte man aufgreifen und evtl. Lösungsansätze vermitteln. Vielleicht steht der Eine oder Andere ja einmal vor gleichem Problem ....
Gruß Barlee
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Was ich mit
Und unter Unterabfrage verstehe ich die Verschachtelung von SELECT-Befehlen.
Man kann also (scheinbar) von gespeicherten Abfragen wieder eine Abfrage machen, vorausgesetzt die "direkt ausführen"-Option muss nicht aktiviert sein. Darum geht das also mit dem UNION nicht. Das hab ich jetzt einfach verschachtelt in einer Abfrage.
Ich hoffe, jetzt ists verständlich...
Das mit dem
meinte, war, wenn du von eine gespeicherte Abfrage noch weiter verarbeiten willst. Also von der gespeicherten Abfrage noch eine Abfrage machen willst.Abfrage von einer Abfrage
Und unter Unterabfrage verstehe ich die Verschachtelung von SELECT-Befehlen.
Man kann also (scheinbar) von gespeicherten Abfragen wieder eine Abfrage machen, vorausgesetzt die "direkt ausführen"-Option muss nicht aktiviert sein. Darum geht das also mit dem UNION nicht. Das hab ich jetzt einfach verschachtelt in einer Abfrage.
Ich hoffe, jetzt ists verständlich...
Das mit dem
muss ich mich jetzt auch fragen, ob das sinnvoll ist. Aber es funktionniert...SELECT * FROM (SELECT ....)
Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?
Du könntest aus einer fertigen Abfrage eine Ansicht erstellen. (rechte Maustaste auf die Abfrage >> "Als Ansicht erstellen").gespeicherte Abfrage noch weiter verarbeiten
Diese kannst Du wie eine Tabelle abfragen...
Gruß Barlee