Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

hhbreth
***
Beiträge: 63
Registriert: So, 06.11.2005 21:47
Wohnort: Überlingen
Kontaktdaten:

Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von hhbreth »

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.
Mit herzlichem Gruß
Hans-Heinrich
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich glaube das gehört zu Base !?

Ich habe den deshalb mal verschoben, war das falsch kann ich auch wieder zurück schieben.



Gruß
Stephan
hhbreth
***
Beiträge: 63
Registriert: So, 06.11.2005 21:47
Wohnort: Überlingen
Kontaktdaten:

Beitrag von hhbreth »

Hallo Stephan,
ja, gehört zu Base, ich hatte mich vertan, weiß aber nicht, wie ich den Beitrag löschen soll. Genauso mit meinem zweiten Beitrag mit dem Kombinationsfeld. Ich habe beide auch wortgleich in Base gestellt.
Mit herzlichem Gruß
Hans-Heinrich
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Beitrag von Barlee »

Hallo hhbreth,

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
Haben Deine Ausgangstabellen unterschiedliche Spaltennamen, dann mußt Du mit Aliasen arbeiten. Dann solltest Du so vorgehen:

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
Hoffe, es hilft

Viele Grüße
Barlee
hhbreth
***
Beiträge: 63
Registriert: So, 06.11.2005 21:47
Wohnort: Überlingen
Kontaktdaten:

Beitrag von hhbreth »

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:
Barlee hat geschrieben:das ließe sich doch mit einer UNION lösen:
Was ist eine UNION?
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
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: Haben Deine Ausgangstabellen unterschiedliche Spaltennamen, ...
Haben sie nicht.
Barlee hat geschrieben: Hoffe, es hilft
Leider nicht. Kann das an meinen Anfängerdummheiten liegen?
Mit herzlichem Gruß
Hans-Heinrich
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Beitrag von Barlee »

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.
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?
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.

Viel Erfolg!!
Gruß Barlee
hhbreth
***
Beiträge: 63
Registriert: So, 06.11.2005 21:47
Wohnort: Überlingen
Kontaktdaten:

Beitrag von hhbreth »

Hallo Barlee,
ganz herzlichen Dank, es hat bestens funktioniert! :oops:
Mit herzlichem Gruß
Hans-Heinrich
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von seve »

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?
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von Barlee »

Hallo seve,
Was kann ich machen?
Die Tabellennamen und deren Spalten in Anführungsstriche setzen. Funktionierts dann?

Gruß Barlee
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von seve »

Ok, mit den Tabellen funktionnierts, wenn ich Anführungszeichen setze.
Kann ich denn auch ein UNION aus zwei Abfragen machen? Ich habs nicht hingekriegt...
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von Barlee »

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
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von seve »

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

Code: Alles auswählen

SELECT * FROM (SELECT ....) UNION SELECT * FROM (SELECT .....)
Auf jeden Fall danke
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von Barlee »

Hallo seve,
glaube langsam... Base kriegt keine Abfrage von einer Abfrage hin, wenn die Option "SQL-Kommando direkt ausführen" aktiviert ist....
...Ich habs jetzt mit einer Unterabfrage gelöst...
... und

Code: Alles auswählen

SELECT * FROM (SELECT ....) UNION SELECT * FROM (SELECT .....)
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
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von seve »

Was ich mit
Abfrage von einer Abfrage
meinte, war, wenn du von eine gespeicherte Abfrage noch weiter verarbeiten willst. Also von der gespeicherten Abfrage noch eine Abfrage machen willst.
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
SELECT * FROM (SELECT ....)
muss ich mich jetzt auch fragen, ob das sinnvoll ist. Aber es funktionniert...
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Beitrag von Barlee »

gespeicherte Abfrage noch weiter verarbeiten
Du könntest aus einer fertigen Abfrage eine Ansicht erstellen. (rechte Maustaste auf die Abfrage >> "Als Ansicht erstellen").
Diese kannst Du wie eine Tabelle abfragen...

Gruß Barlee
Antworten