Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von seve » Mo, 21.01.2008 07:41

Aha, nicht gewusst, das wär die Lösung. Danke...

Gruss

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von Barlee » So, 20.01.2008 18:07

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

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von seve » So, 20.01.2008 16:51

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

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von Barlee » Sa, 19.01.2008 15:32

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

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von seve » Fr, 18.01.2008 15:13

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

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von Barlee » Do, 17.01.2008 20:07

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

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von seve » Mi, 16.01.2008 23:04

Ok, mit den Tabellen funktionnierts, wenn ich Anführungszeichen setze.
Kann ich denn auch ein UNION aus zwei Abfragen machen? Ich habs nicht hingekriegt...

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von Barlee » So, 13.01.2008 22:56

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

Gruß Barlee

Re: Abfrage aus zwei Tabellen mit gleichlautenden Spalten?

von seve » So, 13.01.2008 18:48

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?

von hhbreth » Do, 29.12.2005 21:21

Hallo Barlee,
ganz herzlichen Dank, es hat bestens funktioniert! :oops:

von Barlee » Do, 29.12.2005 17:55

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

von hhbreth » Do, 29.12.2005 14:45

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?

von Barlee » Mi, 28.12.2005 13:40

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

von hhbreth » Di, 27.12.2005 20:14

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.

von Stephan » Di, 27.12.2005 19:45

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

Nach oben