Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Hilfe bei SQL Anfrage

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von absynthemind, 19 November 2014.

  1. absynthemind

    absynthemind Neuer Benutzer

    Liebe Leute!

    Ich benötige Hilfe bei einer SQL Anfrage (Gruppenarbeit für die Uni, absoluter Neuling). Handelt sich um diesen Code hier:

    CREATE VIEW xxy AS (
    SELECT x, x, xxy
    FROM xxx, xxx, xxx
    );
    SELECT URL, TO_CHAR(date, 'yyyy/mm/dd'), COUNT(*) AS ANFRAGEN
    FROM xxy
    WHERE topic LIKE '%weather' OR topic LIKE '%temperature'
    GROUP BY TO_CHAR(querytime, 'yyyy/mm/dd')
    ORDER BY COUNT(*) DESC
    ;

    Wir möchten uns quasi ausgeben lassen, nach welchen Websites an welchem Datum gesucht wurde (mit SQL Developer). Wenn ich den Code laufen lasse, zeigt er mir diese Fehlermeldung an:

    ORA-00979: Kein GROUP BY-Ausdruck
    00979. 00000 - "not a GROUP BY expression"
    *Cause:
    *Action:
    Fehler in Zeile: 92 Spalte: 8

    Lieben Dank schonmal!
     
  2. Hony%

    Hony% Datenbank-Guru

    1. Deine Platzhalter sind gelinde gesagt Mist. Dadurch wird es unnötig schwer deinen Code zu erfassen und zu verstehen.

    2. URL wird weder gruppiert noch aggregiert:
    Code:
    SELECT URL, TO_CHAR(date, 'yyyy/mm/dd'), COUNT(*) AS ANFRAGEN
    Code:
    GROUP BY TO_CHAR(querytime, 'yyyy/mm/dd')
    3. Das frisst nur Rechenpower. COUNT(*) liefert für jedes Tupel den gleichen Wert.
    Code:
    ORDER BY COUNT(*) DESC
    Gruß
    Hony
     
  3. absynthemind

    absynthemind Neuer Benutzer

    Danke für die Antwort erstmal.
    Sorry, hier der korrekte Code ohne verwirrende Plathalter:

    CREATE VIEW trauti2 AS (
    SELECT URL, querytime, aoldata.DMOZ_categories.TOPIC
    FROM aoldata.DMOZ_externalpages, aoldata.querydata, aoldata.DMOZ_categories
    );
    SELECT URL, TO_CHAR(querytime, 'yyyy/mm/dd')
    FROM trauti2
    WHERE topic LIKE '%weather' OR topic LIKE '%temperature'
    GROUP BY (querytime, 'yyyy/mm/dd')
    ORDER BY COUNT(*) DESC

    ;
     
  4. Distrilec

    Distrilec Datenbank-Guru

    Viel wichtiger...
    Sicher das deine View funktioniert ? Meines Erachtens nach gibt das ganze ein kartesisches Produkt... sobald mehr als ein Datensatz in den Tabellen ist.
     
  5. Hony%

    Hony% Datenbank-Guru

    Viel besser. Danke

    Allerdings bleibt meine Antwort in Punkt 2 und 3 identisch.

    Wenn du die ULR ausgeben willst musst du sie vorher unter GROUP BY auch aufführen.

    Das kommt noch dazu.
     
  6. ukulele

    ukulele Datenbank-Guru

    Und es handelt sich vermutlich um MySQL und nicht MS SQL...
     
  7. Walter

    Walter Administrator Mitarbeiter

    Die Fehlermeldung weist aber auf Oracle hin (ORA-00979).
     
    ukulele und akretschmer gefällt das.
  8. ukulele

    ukulele Datenbank-Guru

    Sry hab nur das to_char gesehen :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden