8 messaggi dal 08 maggio 2006
Salve a tutti ho un problema che sicuramente potete risolvermi, ho una tabella tipo carrello composta da id_cliente,id_prodotto, quantita e totale vorrei fare una query che mi tirasse fuori l'elenco dei prodotti di quel cliente che però abbia tipo prodotto 1 e la somma di tutti i campi quantità e totale del prodotto è possibile??
Grazie
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
Infomega ha scritto:
Salve a tutti ho un problema che sicuramente potete risolvermi, ho una tabella tipo carrello composta da id_cliente,id_prodotto, quantita e totale vorrei fare una query che mi tirasse fuori l'elenco dei prodotti di quel cliente che però abbia tipo prodotto 1 e la somma di tutti i campi quantità e totale del prodotto è possibile??
Grazie


se ho ben capito:

SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.Carrello (
IdCliente int NOT NULL ,
IdProdotto int NOT NULL ,
Qta int NOT NULL ,
Totale NUMERIC ( 18 , 4 )
);
INSERT INTO dbo.Carrello VALUES ( 1 , 1 , 1 , 5 );
INSERT INTO dbo.Carrello VALUES ( 1 , 1 , 2 , 10 );
INSERT INTO dbo.Carrello VALUES ( 1 , 2 , 1 , 10 );
INSERT INTO dbo.Carrello VALUES ( 1 , 2 , 2 , 20 );
INSERT INTO dbo.Carrello VALUES ( 2 , 1 , 2 , 10 );
INSERT INTO dbo.Carrello VALUES ( 2 , 2 , 2 , 20 );

DECLARE @Cliente int;
SET @Cliente = 1
SELECT c.IdCliente , c.IdProdotto , SUM( c.Qta) AS [Somma Quantità], SUM(c.Totale) AS [Totale]
FROM dbo.Carrello c
WHERE c.IdCliente = @Cliente
AND c.IdProdotto = 1
GROUP BY c.IdCliente, c.idProdotto;
GO
DROP TABLE dbo.Carrello;
--<----------
IdCliente IdProdotto Somma Quantità Totale
----------- ----------- -------------- --------
1 1 3 15.0000

cioe' un'aggregazione per il cliente X per il solo prodotto "1" con somma di tutte le quantita' e la somma di tutti i "Totali" per quel prodotto ..
ho capito bene?
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
8 messaggi dal 08 maggio 2006
dovrebbe essere cosi, anzi l'inserimento lo già effettuato, ora quello che a me serviva era tirare fuori tutti i prodotti di quel cliente avendo una sola descrizione del prodotto con la somma delle quantità e dei prezzi. Se puo esserti utile posso allegare le tabelle.

CREATE TABLE [dbo].[Carrello] (
[id_Carrello] [int] IDENTITY (1, 1) NOT NULL ,
[id_cliente] [int] NULL ,
[id_articolo] [int] NULL ,
[quantita] [int] NULL ,
[Prezzo] [int] NULL ,
[id_Sessione] [varchar] (50) COLLATE Latin1_General_CI_AS NULL
) ON [PRIMARY]
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
Infomega ha scritto:
dovrebbe essere cosi, anzi l'inserimento lo già effettuato, ora quello che a me serviva era tirare fuori tutti i prodotti di quel cliente avendo una sola descrizione del prodotto con la somma delle quantità e dei prezzi. Se puo esserti utile posso allegare le tabelle.

CREATE TABLE [dbo].[Carrello] (
[id_Carrello] [int] IDENTITY (1, 1) NOT NULL ,
[id_cliente] [int] NULL ,
[id_articolo] [int] NULL ,
[quantita] [int] NULL ,
[Prezzo] [int] NULL ,
[id_Sessione] [varchar] (50) COLLATE Latin1_General_CI_AS NULL
) ON [PRIMARY]

di nuovo non so se ho capito la tua esigenza...
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE [dbo].[Carrello] (
[id_Carrello] [int] IDENTITY (1, 1) NOT NULL ,
[id_cliente] [int] NULL ,
[id_articolo] [int] NULL ,
[quantita] [int] NULL ,
[Prezzo] [int] NULL ,
[id_Sessione] [varchar] (50)
);
CREATE TABLE [dbo].[Articoli] (
[id_Articolo] [int] IDENTITY (1, 1) NOT NULL ,
[Descrizione] varchar(10) NOT NULL
);
INSERT INTO [dbo].[Articoli] VALUES ( 'Art 1' );
INSERT INTO [dbo].[Articoli] VALUES ( 'Art 2' );
INSERT INTO [dbo].[Articoli] VALUES ( 'Art 3' );

INSERT INTO dbo.Carrello VALUES ( 1 , 1 , 1, 5 , 'sessione x');
INSERT INTO dbo.Carrello VALUES ( 1 , 1 , 2, 10, 'sessione x');
INSERT INTO dbo.Carrello VALUES ( 1 , 2 , 1, 1, 'sessione x');
INSERT INTO dbo.Carrello VALUES ( 1 , 2 , 2, 2, 'sessione x');

INSERT INTO dbo.Carrello VALUES ( 2 , 1 , 1, 5, 'sessione x');
INSERT INTO dbo.Carrello VALUES ( 2 , 1 , 2, 10, 'sessione x');
INSERT INTO dbo.Carrello VALUES ( 2 , 2 , 1, 1, 'sessione x');
INSERT INTO dbo.Carrello VALUES ( 2 , 2 , 2, 2, 'sessione x');

DECLARE @Cliente int;
SET @Cliente = 1
SELECT c.[id_cliente] , a.[Descrizione] , SUM( c.[quantita]) AS [Somma Quantità], SUM(c.[Prezzo]) AS [Totale]
FROM [dbo].[Carrello] c JOIN [dbo].[Articoli] a
ON c.[id_articolo] = a.[id_Articolo]
WHERE c.[id_cliente] = @Cliente
--AND c.[id_articolo] = 1
GROUP BY c.[id_cliente], a.[Descrizione];
GO
DROP TABLE [dbo].[Articoli], [dbo].[Carrello];
--<-------
id_cliente Descrizione Somma Quantità Totale
----------- ----------- -------------- -----------
1 Art 1 3 15
1 Art 2 3 3

passato il codice cliente come "parametro", ritorna il codice cliente, la descrizione dell'articolo, l'aggregazione delle quantita' e del "prezzo" per ogni articolo referente il codice cliente, visto che richiedi
tutti i prodotti di quel cliente

ho infatti eliminato la condizione di WHERE [id_articolo] = n in modo che vengano ritornate le aggregazioni per tutti gli articoli referenziati...
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
8 messaggi dal 08 maggio 2006
SELECT c.Id_Cliente,c.Id_articolo,c.Quantita_singola,sum(c.quantita_singola)as [totale quantita],sum(c.prezzo_totale) as [totale prezzo] FROM Carrello c WHERE c.Id_Cliente = 3 GROUP BY c.Id_Cliente,c.id_articolo;"

così va bene mi tira fuori solo un articolo mi occorrerebbe anche avere la descrizione che si trova nella tabella articolo identificabile con l'id_articolo
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
Infomega ha scritto:
SELECT c.Id_Cliente,c.Id_articolo,c.Quantita_singola,sum(c.quantita_singola)as [totale quantita],sum(c.prezzo_totale) as [totale prezzo] FROM Carrello c WHERE c.Id_Cliente = 3 GROUP BY c.Id_Cliente,c.id_articolo;"

così va bene mi tira fuori solo un articolo mi occorrerebbe anche avere la descrizione che si trova nella tabella articolo identificabile con l'id_articolo


ci devi aggiungere la
JOIN Articoli a ON a.id_articolo = c.id_articolo
e chiaramente modificare il raggruppamento, diversamente otterrai un'eccezione..
vedi l'esempio del post precedente
saluti
Modificato da Andrea Montanari il 17 maggio 2006 19.37 -

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.