AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung iOS SQLite - Select mit mehreren Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite - Select mit mehreren Tabellen

Ein Thema von Crocotronic · begonnen am 15. Mär 2014 · letzter Beitrag vom 17. Mär 2014
Antwort Antwort
Furtbichler
(Gast)

n/a Beiträge
 
#1

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 09:23
Nee, 'GROUP BY' muss immer da sein, wenn nicht über alles aggregiert wird. Ich verstehe nicht warum, aber man muss es angeben, obwohl die GROUP BY Klausel immer der Feldliste entspricht, die im SELECT angegeben ist, wenn man die Aggregatfunktionen weglässt.
Code:
SELECT <BlaFaselZeugs>
     , SUM(Foo)
     , COUNT(*)
     , AVG(Bar)
  FROM Tabelle
GROUP BY <BlaFaselZeugs>
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#2

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 14:13
Vielen Dank für die Tipps, funktioniert jetzt
Code:
SELECT teamA, count(*)
FROM spiel
JOIN tor ON spiel.recno = spielnr GROUP BY teamA
Jetzt habe ich nur noch ein Problem mit dem Subselect. In meinem Fall muss ich etwas gruppieren und dann den Mittelwert aller Gruppen berechnen:
Code:
SELECT AVG(tmp) FROM (
                        SELECT table1.feld3, table2.feld5, (SUM(...)/COUNT(*))/10 AS tmp
                        FROM table1 JOIN table2 ON table1.fkey = table2.pkey
                        GROUP BY table1.feld3, table2.feld5
                      );
Das Beispiel ist zwar nicht gerade anschaulich, zeigt aber was ich machen will.
Hierbei bekomme ich wieder den Fehler, dass die Operation nicht unterstüzt wird.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 14:22
Ich kenne mich mit SqLite nicht so aus, versuch mal
SQL-Code:
 
SELECT
    AVG(s.tmp) as tmp
FROM
(
    SELECT
        table1.feld3, table2.feld5, (SUM(...)/COUNT(*))/10 AS tmp
    FROM table1
             JOIN table2 ON table1.fkey = table2.pkey
    GROUP BY
        table1.feld3, table2.feld5
    ) s;
Markus Kinzler
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#4

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 15:25
Das ist es leider auch nicht
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 15:32
Wenn SQLite immer ein Gruppierungsfeld haben will, dann geben wir es ihm halt
SQL-Code:
SELECT
    1 as Feld, AVG(s.tmp) as tmp
FROM
(
    SELECT
        table1.feld3, table2.feld5, (SUM(...)/COUNT(*))/10 AS tmp
    FROM table1
             JOIN table2 ON table1.fkey = table2.pkey
    GROUP BY
        table1.feld3, table2.feld5
    ) s
group by
  s.Feld;
Markus Kinzler
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#6

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 15:48
Und immernoch wird die Exception "Operation wird nicht Unterstützt" ausgelöst
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: SQLite - Select mit mehreren Tabellen

  Alt 16. Mär 2014, 15:55
Und wenn Du das Dummyfeld in die derived table verschiebst?
Markus Kinzler
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: SQLite - Select mit mehreren Tabellen

  Alt 17. Mär 2014, 06:59
In meinem Fall muss ich etwas gruppieren und dann den Mittelwert aller Gruppen berechnen:
Code:
SELECT AVG(tmp) FROM (...(SUM(...)/COUNT(*))... AS tmp);
Jedes Subselect benötigt einen Alias, also:
Code:
 SELECT .... from (select ... from ...) alias X
Dessenungeachtet ist das Mittelwertbilden von Mittelwerten eine Milchmädchenrechnung:
Auf der Insel Delfipractico befinden sich die Dörfer Villa-Vcl und Villa-Fmx.
Die 1000 Bewohner von Villa-Vcl verdienen im Durchschnitt 1 Euro (arme Bauern halt).
Die beiden Bewohner von Villa-Fmx verdienen beide jeweils 1000 Euro (sie vermarkten die bäuerlichen Erzeugnisse).
Der Durchschnittslohn auf der Insel Delfipractico beträgt also...
a: (1000 + 1) / 2 = 500,50 Euro?
b: (1000 x 1 + 2 x 1000) / 1002 = 2,99 Euro?
c: 1 Euro? (Median)

Ganz sicher nicht (a). Je nach konkreter Fragestellung eher (b) oder (c).

Das ändert natürlich nichts an der Problematik von Subselects, aber dein Beispiel verwirrt mich, und deshalb mein Einwand.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz