Zwei Abfragen zu einer kombinieren

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: Zwei Abfragen zu einer kombinieren

Re: Zwei Abfragen zu einer kombinieren

von F3K Total » Mo, 22.06.2015 18:35

Hi,
so vielleicht? Allerdings hast Du dann unterschiedliche Informationen in einer Spalte.

Code: Alles auswählen

SELECT 
    "Kontakte"."Name",
    "Kommunikation"."Datum_Kom" as "Datum_Kom_Dok", 
    "Kommunikation"."Wiedervorlage", 
    "Kommunikation"."Bemerkung" as "Bem/Dok" 
FROM 
    "Kommunikation", 
    "Kontakte" 
WHERE 
    "Kommunikation"."Kontakt-ID" = "Kontakte"."Kontakt-ID" 
AND 
    "Kommunikation"."erledigt" = FALSE 
AND 
    ( DATEDIFF( 'dd', "Wiedervorlage", CURDATE( ) ) >= 0 OR DATEDIFF( 'dd', "Datum_Kom", CURDATE( ) ) > 30 )
UNION 
SELECT 
    "Kontakte"."Name", 
    "Dokumente_Kunden"."Datum_Dok", 
    null,
    "Dokumente"."Dokumentenname" 
FROM 
    "Kontakte", 
    "Dokumente_Kunden", 
    "Dokumente" 
WHERE 
    "Dokumente_Kunden"."FK_Kontakt-ID" = "Kontakte"."Kontakt-ID" 
AND 
    "Dokumente_Kunden"."FK_Dokument-ID" = "Dokumente"."Dokument-ID" 
AND 
    DATEDIFF( 'dd', "Datum_Dok", CURDATE( ) ) > 90 
Gruß R

Re: Zwei Abfragen zu einer kombinieren

von biggi 0815 » Mo, 22.06.2015 18:09

Hallo Robert,

so, ich habe nun eine kleine Datenbank erzeugt. Die beiden Abfragen, die einzeln funktionieren, heißen "Wiedervorlage_Dok" und "Wiedervorlage_Kom".
Wie Du schon bemerkt hast, haben sie als einzige gemeinsame Spalte "Name".
Verbinde ich beide Abfragen mit UNION und lasse mir nur den "Name" anzeigen, so passt alles -"Wiedervorlage_total_Name".
Ich benötige aber noch zusätzlich die anderen Informationen. Ergänze ich die beiden Teilabfragen um die Spalten (die teilweise leer sind), dann erhält man verschiedene Zeilen, die so gar nicht existieren. Irgendwie fehlt noch eine zusätzliche Bedingung...

Viele Grüße
Birgit
Datenbankbsp_150622.odb
(5.08 KiB) 119-mal heruntergeladen

Re: Zwei Abfragen zu einer kombinieren

von RobertG » Do, 18.06.2015 17:00

Hallo Birgit,

vielleicht kannst Du ja einmal eine Beispieldatenbank mit ein paar Dummydatensätzen hier anhängen. Mir wird nicht so richtig klar, wo es denn dabei haken sollte.

Gruß

Robert

Re: Zwei Abfragen zu einer kombinieren

von RobertG » Mi, 17.06.2015 16:08

Hallo Birgit,

Du hast zwei Abfragen, die ich gegebenenfalls als Ansichten speichern würde:

Code: Alles auswählen

SELECT "Kommunikation"."Datum_Kom", "Kontakte"."Name", "Kommunikation"."Wiedervorlage", "Kommunikation"."Bemerkung" FROM "Kommunikation", "Kontakte" WHERE "Kommunikation"."Kontakt-ID" = "Kontakte"."Kontakt-ID" AND DATEDIFF( 'dd', "Wiedervorlage", CURDATE( ) ) >= 0 
und

Code: Alles auswählen

SELECT "Kontakte"."Name", "Dokumente_Kunden"."Datum_Dok", "Dokumente"."Dokumentenname" FROM "Kontakte", "Dokumente_Kunden", "Dokumente" WHERE "Dokumente_Kunden"."FK_Kontakt-ID" = "Kontakte"."Kontakt-ID" AND "Dokumente_Kunden"."FK_Dokument-ID" = "Dokumente"."Dokument-ID" AND DATEDIFF( 'dd', "Datum_Dok", CURDATE( ) ) > 100
Das Feld, das in beiden Anfragen vorhanden ist, ist das Feld "Name".
Fasst Du die Anfragen mit

Code: Alles auswählen

SELECT ... FROM "Wiedervorlage_Kom", "Wiedervorlage_Dok" WHERE "Wiedervorlage_Kom"."Name" = "Wiedervorlage_Dok"."Name"
zusammen, so werden nur die Zeilen angezeigt, in denen bei beiden Abfragen das Feld "Name" gleich belegt ist.

Bei

Code: Alles auswählen

SELECT ... FROM "Wiedervorlage_Kom" LEFT JOIN "Wiedervorlage_Dok" ON "Wiedervorlage_Kom"."Name" = "Wiedervorlage_Dok"."Name"
werden alle Datensätze von "Wiedervorlage_Dok" angezeigt, auch wenn kein Name in "Wiedervorlage_Kom" existiert.
Entsprechendes gilt natürlich bei umgekehrter Aufführung der Tabellen.

Das Ganze hat mit Union nichts zu tun, da die Tabellen unterschiedliche Felder haben.

Gruß

Robert

Re: Zwei Abfragen zu einer kombinieren

von RobertG » Do, 11.06.2015 12:17

Hallo Birgit,

das kommt jetzt natürlich darauf an, welche Felder in den Abfragen enthalten sind.

Code: Alles auswählen

SELECT
"Vorname"
FROM "Tabelle1"
UNION DISTINCT
SELECT"Vorname"
FROM "Tabelle2"
Das schreibt z.B. alle Vornamen aus der einen Tabelle und alle Vornamen aus der zweiten Tabelle untereinander.
Willst Du zwei Tabellen über irgendeine Beziehung miteinander verknüpfen, dann musst Du gegebenenfalls statt eines Gleichheitszeichens einen JOIN erstellen.
Was Du genau brauchen kannst könntest Du gegebenenfalls aus dem ermitteln.

Wenn Du die Abfragen oder ein Beispiel hier postest kann die Hilfestellung auch konkreter sein.

Gruß

Robert

Nach oben