Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    41

    [ACCESS] group by non riconosciuta

    Devo eseguire un conteggio e per questo da Access ho utilizzato la funzione conteggio, ma non posso eseguire la query poichè mi da l'errore di "Impossibile eseguire una query che non include l'esspressione "ISBN" specificata come parte di una funzione di aggregazione".
    ISBN è la chiave primaria di Libro e permette di avere la relazione con LineaTicket.
    Chiaramente mi sta chiedendo di aggiungere una clausola di group by, ma una volta aggiunta, l'errore che sbuca fuori è:
    "La clausola LEVEL include una parola riservata o un argomento scritto in modo errato o mancante opure la punteggiatura non è corretta"

    Ho provato a correggere in tutti i modi la sintassi della clausola group by ma pare vada bene, quindi l'errore non è la punteggiatura. Come potrei risolvere?
    Questo il codice SQL della query:
    codice:
    SELECT Libro.ISBN, Libro.Titulo, LineaTicket.Fecha, LineaTicket.Unidades, Tienda.Tienda,
    [LineaTicket].[Unidades]*[Libro].[PVP] AS Espr1, (Count([LineaTicket].[Ticket])) AS Espr2 
    FROM Tienda INNER JOIN (Libro INNER JOIN LineaTicket ON Libro.[ISBN] = LineaTicket.[ISBN]) ON Tienda.Cod_tienda = LineaTicket.Cod_tienda 
    WHERE (((Libro.ISBN)=[LineaTicket].[ISBN]) AND ((LineaTicket.Fecha)=#10/7/2012#)); 
    GROUP BY  LineaTicket.ISBN, LineaTicket.Ticket

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333

    Re: [ACCESS] group by non riconosciuta

    Originariamente inviato da vonkraun
    ....... AND ((LineaTicket.Fecha)=#10/7/2012#));
    GROUP BY LineaTicket.ISBN, LineaTicket.Ticket
    A cosa serve quel ";" prima di GROUP BY ??


    ( Il ";" è la chiusura delle query di Access )


    .

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    41
    Bene, il problema era quello, maledette sviste.

    Ora però se ne pone un altro: prima di tutto mi ha chiesto di inserire altri campi nella clausola group by e non ho capito il perchè dato che raggruppavo solo in base a LineaTicket.Ticket, poi una volta messi tutti e quindi avendo eseguito la seguente query:
    codice:
    SELECT Libro.ISBN, Libro.Titulo, LineaTicket.Fecha, LineaTicket.Unidades, Tienda.Tienda,
     [LineaTicket].[Unidades]*[Libro].[PVP] AS Espr1, (Count([LineaTicket].[Ticket])) AS Espr2 
    FROM Tienda INNER JOIN (Libro INNER JOIN LineaTicket ON Libro.[ISBN] = LineaTicket.[ISBN]) ON 
    Tienda.Cod_tienda = LineaTicket.Cod_tienda 
    WHERE (((Libro.ISBN)=[LineaTicket].[ISBN]) AND ((LineaTicket.Fecha)=#10/7/2012#)) 
    GROUP BY  LineaTicket.Ticket, Libro.ISBN, Libro.Titulo,  LineaTicket.Fecha, 
    LineaTicket.Unidades,  Tienda.Tienda,  [LineaTicket].[Unidades], [Libro].[PVP]  ;
    non mi da il risultato corretto, ovvero per la Tienda con codice 'x' dovrei ottenere un numero di Unidades superiore a 1 (poichè le linee nella tabella LineaTicket dove compare un certo codice di un libro in una certe data sono maggiori di 1), mentre invece mi restituisce 1.

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Aiutaci ad aiutarti

    Scrivici
    __ qualche record delle 3 tabelle
    __ quello che ottieni con quella vista
    __ quello che vorresti ottenere



    .

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    41
    Tabella Libro:
    ISBN - Titulo - PVP
    12408414483 - Eclipse - 17,95
    13229009509 - No consigo adelgazar - 13,5
    17074288725 - El secreto - 22
    20191444754 - Tres metros sobre el cielo - 8,95

    Tabella LineaTicket
    Cod_tienda - Fecha - Ticket - ISBN - Unidades
    1 - 07/10/2012 - 40479 - 12408414483 - 1
    1 - 07/10/2012 - 40479 - 12408414483 - 1
    1 - 07/10/2012 - 40480 - 58427771925 - 1
    1 - 07/10/2012 - 40480 - 77561696171 - 1
    1 - 07/10/2012 - 40481 - 22169209122 - 1
    1 - 07/10/2012 - 40481 - 34751966595 - 1


    Tabella Tienda
    Cod_tienda Tienda
    1 Todo Libro Aljaraque
    2 Todo Libro Almería
    3 Todo Libro Berja
    4 Todo Libro Donostia
    5 Todo Libro Estepona
    6 Todo Libro Gójar

    (parte del) Risultato Query:
    ISBN - Titulo - Fech - Unidades - Tienda - Espr1 - Espr2
    12408414483 - Eclipse - 07/10/2012 - 2 - Todo Libro Huetor Tájar - 35,9 - 1

    Mi aspetterei che l'ultima espressione della query restituisca 2 anzichè 1 dato che ci sono due righe con lo stesso Ticket venduti nella Tienda 1 per quel libro con ISBN 12408414483 nella data 07/10/2012

    Spero di essermi spiegato.
    L'espressione 2 dovrebbe restituire il numero di clienti, ovvero la quantità di tickets della Tienda in cui viene venduto un certo libro nella data 07/10/2012

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Originariamente inviato da vonkraun
    Mi aspetterei che l'ultima espressione della query restituisca 2 anzichè 1 dato che ci sono due righe con lo stesso Ticket venduti nella Tienda 1 per quel libro con ISBN 12408414483 nella data 07/10/2012

    Spero di essermi spiegato.
    L'espressione 2 dovrebbe restituire il numero di clienti, ovvero la quantità di tickets della Tienda in cui viene venduto un certo libro nella data 07/10/2012
    A me sembra che ti restituisce gia 2 perche fai correttanente il conteggio.


    invece al campo Unidades hai fatto il raggruppamento per cui ti restituisce 1
    invece di 2 secondo me quella dovrebbe essere una somma
    ( ma non ho capito benissimo la logica )

    ad ogni modo prova cosi:
    codice:
    SELECT 
    Libro.ISBN, 
    Libro.Titulo, 
    LineaTicket.Fecha, 
    Sum(([LineaTicket].[Unidades])) AS SommUnid, 
    Tienda.Tienda, 
    Sum([LineaTicket].[Unidades]*[Libro].[PVP]) AS Tot, 
    Count(([LineaTicket].[Ticket])) AS ContTicket
    FROM 
    Tienda 
    INNER JOIN 
    (
    Libro 
    INNER JOIN 
    LineaTicket 
    ON 
    Libro.ISBN = LineaTicket.ISBN
    ) 
    ON 
    Tienda.Cod_tienda = LineaTicket.Cod_tienda
    GROUP BY 
    Libro.ISBN, 
    Libro.Titulo, 
    LineaTicket.Fecha, 
    Tienda.Tienda
    HAVING 
    (((LineaTicket.Fecha)=#10/7/2012#))
    ;


    Facci sapere

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    41
    Ora sì, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.