Wie verknüpfe ich mehrere Abfragen?

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: Wie verknüpfe ich mehrere Abfragen?

Re: Wie verknüpfe ich mehrere Abfragen?

von Barlee » Di, 25.08.2009 20:30

Hallo ladiko,

das, was der Abfragedesigner bietet, geht natürlich auch in purem SQL.
In Deinem Fall bietet sich die Lösung mittels LEFT JOIN an. D.h. Du benutzt Deine drei erstellten (Unter)-Abfragen und verbindest die einzelnen Ergebnistabellen.
Vgl. auch viewtopic.php?f=8&t=25623&p=111165&hili ... in#p111165

Code: Alles auswählen

SELECT 
"Tab_A"."Ort", 
"Tab_A"."Tiere_Ges",
"Tab_B"."Anz_Hunde"
 FROM
(
SELECT                                       
"Ort",                                    
COUNT("ID")  AS "Tiere_Ges"   
FROM  "Tiere"   
WHERE MONTH( "Geburtsdatum" ) = 6                             
GROUP BY  "Ort"                                       
) "Tab_A" LEFT JOIN
(
SELECT                                                               
"Ort",                                                               
COUNT("ID")  AS "Anz_Hunde"                                                     
FROM  "Tiere"
WHERE MONTH( "Geburtsdatum" ) = 6 AND "Gattung" = 'Hund'
GROUP BY "Ort"
) "Tab_B" ON "Tab_A"."Ort" = "Tab_B"."Ort"
ORDER BY "Tab_A"."Ort" ASC
Mit den Mäusen/Katzen verfährst Du genauso.
SQL direkt ausführen muss aktiviert sein!

Gruß Barlee

Re: Wie verknüpfe ich mehrere Abfragen?

von eBayer » Di, 25.08.2009 17:38

Hallo, entschuldigt bitte, wenn ich mich als SQL-Dummy hier einmische......
Aber ich habe in meiner Anwendung mit dem Abfragedesigner eine Abfrage erstellt, die sich ihrerseits Daten aus Tabellen und einer weiteren Abfrage holt - und auch richtig funktioniert!
Gruß eBayer

Re: Wie verknüpfe ich mehrere Abfragen?

von pmoegenb » Di, 25.08.2009 15:44

Hier stehe eigentlich das Erforderliche; http://sql.1keydata.com/de/sql-union.php

Code: Alles auswählen

SELECT "Ort",  COUNT("ID")
FROM "Tiere"
WHERE MONTH( "Geburtsdatum" ) = 6                             
GROUP BY "Ort"                                       
ORDER BY "Ort" ASC
UNION
SELECT  "Ort",  COUNT("ID")                                                       
FROM  "Tiere"
WHERE MONTH( "Geburtsdatum" ) = 6 AND "Gattung" = 'Hund' 
GROUP BY  "Ort"
ORDER BY  "Ort" ASC
In diesem Beispiel werden Deine Abfragen durch die Klausel UNION miteinander verknüpft.

Re: Wie verknüpfe ich mehrere Abfragen?

von ladiko » Di, 25.08.2009 15:16

grundlegend habe ich auch nichts dagegen. ich habe die bisher vom assi erstellten abfragen in der sql ansicht auch verstanden und kann auch mit einer sql-eingabe sehr gut leben. vielleicht könntest du mir dabei helfen zum gewünschten ergebnis zu kommen? :)

Re: Wie verknüpfe ich mehrere Abfragen?

von pmoegenb » Di, 25.08.2009 13:30

Die Frage kann ich Dir nicht beantworten, ich arbeite nicht mit Assistenten sondern gebe die SQL-Klausel direkt ein.

Re: Wie verknüpfe ich mehrere Abfragen?

von ladiko » Di, 25.08.2009 11:42

wieso bietet mir der abfragen-assistent dann an, dass ich zwischen tabellen und bestehenden abfragen als quelle wählen kann?

das ergebnis soll dann quasi so aussehen:

Code: Alles auswählen

Ort    Gesamt Hunde Katzen Mäuse
=============================
Bern   2      2            1
Genf   3      1            1
Zürich 1            1

Re: Wie verknüpfe ich mehrere Abfragen?

von pmoegenb » Di, 25.08.2009 11:28

Du kannst nicht mit einer neuen Abfrage auf bestehende/gespeicherte Abfragen zugreifen.

Du kannst aber mehrere SQL-Abfragen miteinander verknüpfen. Alles weitere siehe http://sql.1keydata.com/de/sql-union.php

Wie verknüpfe ich mehrere Abfragen?

von ladiko » Di, 25.08.2009 09:17

Ich habe eine Tabelle "Tiere" in der Form

Code: Alles auswählen

ID Ort    Geburtsdatum Gattung
=======================================
1  Bern   01.05.2009   Hund
2  Zürich 02.06.2009   Katze
3  Genf   05.06.2009   Maus
4  Bern   21.06.2009   Hund
5  Genf   10.06.2009   Maus
6  Genf   14.08.2009   Hund
Dazu folgende Abfragen:

2009-06_Gesamt:

Code: Alles auswählen

SELECT                                        
    "Ort",                                     Ort    COUNT("ID")
    COUNT("ID")                                ==================
FROM                                           Bern   2
    "Tiere"                        -->         Genf   3
WHERE                                          Zürich 1
    MONTH( "Geburtsdatum" ) = 6                              
GROUP BY                                        
    "Ort"                                        
ORDER BY                                        
    "Ort" ASC
2009-06_Hund:

Code: Alles auswählen

SELECT                                                               
    "Ort",                                                               
    COUNT("ID")                                                        
FROM                                                        
    "Tiere"                                                     Ort  COUNT("ID")
WHERE                                                           ================
    MONTH( "Geburtsdatum" ) = 6 AND "Gattung" = 'Hund'   -->    Bern 2
GROUP BY                                                        Genf 1
    "Ort"
ORDER BY
    "Ort" ASC
Diese möchte ich nun verknüpfen so dass ich eine Abfrage habe in der in der ersten Spalte der Ort steht, in der nächsten die zugehörige Anzahl aller Tiere und danach eine Spalte in der nur die Anzahl der Hunde steht und dann je noch eine für Katzen und Mäuse, aber ich scheitere schon an diesem einfachen Beispiel in dem nur die Gesamtzahl und die Hunde auftauchen:

Code: Alles auswählen

SELECT
    "2009-06_Gesamt"."Ort" AS "Ort"
    COUNT("2009-06_Gesamt"."ID") AS "Gesamt",
    COUNT("2009-06_Hund"."ID") AS "Hund",
FROM
    "2009-06_Gesamt" INNER JOIN "2009-06_Hund",
    ON "2009-06_Gesamt.Ort" = "2009-06_Hund.Ort"
leider bekomm ich einen sql syntax error, leider ohne genauere angaben und google hilft mir leider auch nicht weiter um die beiden listen zu verknüpfen. Kann man die drei abfragen eigentlich auch irgendwie in eine packen?

Nach oben