Condividi:        

Eseguire una query con Access

Hai problemi con i file Zip, vuoi formattare l'HD, non sai come funziona FireFox? O magari ti serve proprio quel programmino di cui non ricordi il nome! Ecco il forum dove poter risolvere i tuoi problemi.

Moderatori: Dylan666, hydra, gahan

Eseguire una query con Access

Postdi PcByte » 31/08/03 19:00

Ragazzi ho una domanda da farvi, ho una tabella in un file MDB che contiene prodotti suddivisi in diverse categorie io voglio creare una query in access visto che in asp è un casino.....
Il risultato che vorrei è il numero di prodotti di ciascuna categoria.

Come posso fare?

La tabella si chiama prodotti ed è così strutturata:

ID Categoria

Grazie
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Sponsor
 

Postdi Triumph Of Steel » 31/08/03 19:48

mhmh prova con
Codice: Seleziona tutto
SELECT COUNT(DISTINCT [ID Categoria]) FROM [Nome_Tabella]



oppure

Codice: Seleziona tutto
SELECT COUNT(ID Categoria) FROM [Nome_Tabella] GROUP BY [ID Categoria]


non ne sono sicuro, ma dovrebbe essere la strada giusta..
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi PcByte » 31/08/03 20:30

Grazie per la risposta.

Purtroppo però la prima query mi genera l'errore "Operatore mancante"

La seconda non genera errore ma mi crea un colonna con tutti irecord uguali a 1.

Ciao
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi Triumph Of Steel » 31/08/03 22:45

mjmhmh allora prova

Codice: Seleziona tutto
SELECT Count( ID Categoria ) AS Totale, ID Categoria
FROM  prodotti 
GROUP  BY [ID Categoria]



sicuro che ci sia solo ID Categoria nella tabella??
cioè, il nome del prodotto ecc ... nulla??
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi PcByte » 01/09/03 07:28

Neppure così funziona, sono però riuscito utilizzando due query così:

SELECT DISTINCTROW Prodotti.ID, Prodotti.Categoria, Count(*) AS [Conteggio Di Prodotti]
FROM Prodotti
GROUP BY Prodotti.ID, Prodotti.Categoria;


SELECT DISTINCTROW [Prodotti Query].Categoria, Count([Prodotti Query].[Conteggio Di Prodotti]) AS [Somma Di Conteggio Di Prodotti]
FROM [Prodotti Query]
GROUP BY [Prodotti Query].Categoria;


Grazie lo stesso ;)
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi piercing » 01/09/03 12:26

Codice: Seleziona tutto
SELECT Prodotti.idCategoria, Count(Prodotti.idProdotto) FROM Prodotti
GROUP BY Prodotti.idCategoria;


Deve funzionare per forza!!!
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi PcByte » 01/09/03 12:59

Non va mi chiede id.Prodotti ed id.Categoria :(
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi piercing » 01/09/03 13:51

evvabbè è chiaro che la devi personalizzare con i nomi dei campi della TUA tabella... oppure ci devi fornire il tracciato dei record... mi sembrava palese il significato!
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi PcByte » 01/09/03 14:49

select count(*) from prodotti group by categoria

Così funziona solo che non appare la colonna delle categorie ed in prodotti uguali a zeo.
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi Triumph Of Steel » 01/09/03 18:20

PcByte ha scritto:select count(*) from prodotti group by categoria


scusa ma questa è quella che ti ho scritto io nell'ultimo post... :D :lol:
soltanto che devi dare un "nome" al Count.. io infatti ho messo
Count(*) AS Totale, o meglio, Count(IDCategoria) AS Totale...
in questo modo il campo del risultato ha un nome...

cmq ho provato la query in MySQL e funziona (MySQL e Access usano la stessa sintassi di SQL, tranne per alcune cose, ma per fare un Count è lo stesso)
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi piercing » 01/09/03 19:40

Insisto sul fatto che la soluzione è quella che ti ho dato...

Però se ti servono anche le categorie che hanno zero prodotti dobbiamo fare un'altra query... (dobbiamo fare un JOIN)

Se possibile dacci il tracciato dei record (la visualizzazione in "Struttura" come la chiama Access) delle tabelle... almeno non rifacciamo i lavori 12 volte...
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi PcByte » 01/09/03 21:13

Ok piercing

Le tabelle sono due:

Una si chiama CATEGORIE

Ed è così costituita

ID Categoria Scategoria
21 NB Acer 40
22 NB Mitac 40
23 Cabinet 22
24 Casse acustiche 45
25 Cpu AMD 26
26 Cpu INTEL 26
27 Creative 45
28 Data Cartridge 31
29 Dissipatori e ventole 26
30 Drivers 22
31 Hard disk FUJITSU 31
32 Hard disk HITACHI 31

ID=Contatore
Categoria=Testo
Scategoria=Numerico

La seconda si chiama PRODOTTI così strutturata:

ID Codice SCategoria Categoria Prodotto
1238 2 41 135 PC1
1239 3 41 135 PC2
1240 4 41 135 PC4

ID=Contatore
Codice=Testo
SCategoria=Numerico
Categoria=Numerico
Prodotto=Testo

Spero di essere stato chiaro.

Ciao e grazie a tutti ;)
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi Triumph Of Steel » 02/09/03 01:41

ora si...
riprova questa o quella di Pier

Codice: Seleziona tutto
SELECT Count( ID ) AS Totale, ID, Prodotto
FROM  prodotti 
GROUP  BY [Categoria]
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi archimede » 02/09/03 08:01

Scusate se mi intrometto. Un paio di suggerimenti:

1) Non mi è chiaro perchè il campo Sottocategoria è in entrambe le tabelle. Forse dovresti rivedere il disegno del tuo db.

2) Se usi delle pagine ASP, occhio ai nomi dei campi e delle tabelle: Access accetta un po' di tutto, ma alcuni nomi sono riservati in ODBC/OLE DB: ID potrebbe essere uno di questi.

Detto questo (ed ignorando per il momento il campo Sottocategoria) io proverei una query di questo tipo:
Codice: Seleziona tutto
SELECT CATEGORIE.IDCategoria, CATEGORIE.Categoria, (SELECT count(*) FROM PRODOTTI WHERE PRODOTTI.IDCategoria=CATEGORIE.IDCategoria) as TotProd FROM CATEGORIE;
HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi PcByte » 02/09/03 08:56

Triumph Of Steel ha scritto:ora si...
riprova questa o quella di Pier

Codice: Seleziona tutto
SELECT Count( ID ) AS Totale, ID, Prodotto
FROM  prodotti 
GROUP  BY [Categoria]


Mi da il seguente errore:

"Impossibile eseguire una query che non include l'espressione "ID" specificata come parte di una funzione di aggegazione"
:cry:
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi Frengo78 » 02/09/03 08:58

Andra' fra parentesi quadre? Access ha anche una modalita' un po' piu visuale per scrivere le query se non sei in grado di scrivere direttamente nel suo sql.
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi archimede » 02/09/03 09:08

Così non credo che possa funzionare. Se vuoi seguire questa strada prova con:
Codice: Seleziona tutto
SELECT Count(*) AS Totale, IDcategoria FROM Prodotti GROUP BY IDCategoria
In questo modo, però, non otterrai le categorie per le quali non ci sono prodotti (e neppura la descrizione di ciascuna Categoria).

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi PcByte » 02/09/03 09:20

Frengo78 ha scritto:Andra' fra parentesi quadre? Access ha anche una modalita' un po' piu visuale per scrivere le query se non sei in grado di scrivere direttamente nel suo sql.


tutta la query?
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi PcByte » 02/09/03 09:21

archimede ha scritto:Così non credo che possa funzionare. Se vuoi seguire questa strada prova con:
Codice: Seleziona tutto
SELECT Count(*) AS Totale, IDcategoria FROM Prodotti GROUP BY IDCategoria
In questo modo, però, non otterrai le categorie per le quali non ci sono prodotti (e neppura la descrizione di ciascuna Categoria).

Alessandro


Mi chiede il valore di IDCategoria :(
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Postdi PcByte » 02/09/03 09:26

archimede ha scritto:Scusate se mi intrometto. Un paio di suggerimenti:

1) Non mi è chiaro perchè il campo Sottocategoria è in entrambe le tabelle. Forse dovresti rivedere il disegno del tuo db.

2) Se usi delle pagine ASP, occhio ai nomi dei campi e delle tabelle: Access accetta un po' di tutto, ma alcuni nomi sono riservati in ODBC/OLE DB: ID potrebbe essere uno di questi.

Detto questo (ed ignorando per il momento il campo Sottocategoria) io proverei una query di questo tipo:
Codice: Seleziona tutto
SELECT CATEGORIE.IDCategoria, CATEGORIE.Categoria, (SELECT count(*) FROM PRODOTTI WHERE PRODOTTI.IDCategoria=CATEGORIE.IDCategoria) as TotProd FROM CATEGORIE;
HTH.

Alessandro


Mi chiede i valori di CATEGORIE.IDCategoria e PRODOTTI.IDCategoria

:roll:
PcByte
Utente Junior
 
Post: 25
Iscritto il: 31/08/03 18:47

Prossimo

Torna a Software Windows


Topic correlati a "Eseguire una query con Access":


Chi c’è in linea

Visitano il forum: Nessuno e 148 ospiti