Hi,
I have a pretty simple problem for a SQL programmer regarding GROUPINGS:
I have two tables tblShoppingCarts and tblProducts.
The first table stores all shopping cart data.
I would like to retrieve all this data (cart and all related product
information) BUT need to GROUP BY tblShoppingCarts.sessionid.
Also, any suggestions on fields to include in the shopping cart would be
much appreciated.
Thanks for your help.
NOTE: To retreive all cart information run the stored procedure EXEC
spGetShoppingCarts NULL, NULL
--------------------------------------------
CREATE TABLE [dbo].[tblProducts] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[category] [int] NOT NULL ,
[publishdate] [smalldatetime] NOT NULL ,
[title] [varchar] (100) NOT NULL ,
[shorttitle] [varchar] (30) NULL ,
[version] [float] NOT NULL ,
[build] [int] NOT NULL ,
[shortDescription] [varchar] (1000) NULL ,
[description] [varchar] (4000) NOT NULL ,
[retailPrice] [money] NOT NULL ,
[oemPrice] [money] NULL ,
[hasImage] [bit] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblShoppingCarts] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[sessionid] [bigint] NOT NULL ,
[publishdate] [smalldatetime] NOT NULL ,
[modifieddate] [smalldatetime] NULL ,
[productid] [int] NOT NULL ,
[quantity] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE PROCEDURE spGetShoppingCarts
@id int = NULL,
@sessionid bigint = NULL
AS
-- Get all shopping carts
IF (@id IS NULL) AND (@sessionid IS NULL)
BEGIN
SELECT
sc.[id],
sc.sessionid,
sc.publishdate,
sc.modifieddate,
sc.productid,
p.[title] AS ProductTitle,
p.[shorttitle] AS ProductShortTitle,
sc.quantity,
COUNT(sc.sessionid) AS ProductCount
--p.discount,
--p.quantity AS DiscountQuantity,
--p.code
FROM
tblShoppingCarts sc,
tblProducts p
WHERE
sc.productid = p.[id]
GROUP BY
sc.[id],
---I WANT TO GROUP BY SESSIONID!!!!!!!!!!!!!!!!!! WHY DOESNT THIS
WORK??????
sc.sessionid,
sc.publishdate,
sc.modifieddate,
sc.productid,
p.title,
p.shorttitle,
sc.quantity
ORDER BY
sc.[modifieddate] DESC
END
ELSE
BEGIN
-- Get shopping cart by session
IF (@id IS NULL)
BEGIN
SELECT
sc.[id],
sc.publishdate,
sc.modifieddate,
sc.productid,
p.[title] AS ProductTitle,
p.[shorttitle] AS ProductShortTitle,
sc.quantity,
ProductCount = ( SELECT COUNT(sc.productid) FROM tblShoppingCarts sc
WHERE sc.sessionid = @sessionid )
--p.discount,
--p.quantity AS DiscountQuantity,
--p.code
FROM
tblShoppingCarts sc,
tblProducts p
WHERE
sc.productid = p.[id]
AND sc.[sessionid] = @sessionid
END
-- Get shopping cart by id
ELSE
BEGIN
SELECT
sc.[id],
sc.publishdate,
sc.modifieddate,
sc.productid,
p.[title] AS ProductTitle,
p.[shorttitle] AS ProductShortTitle,
sc.quantity,
COUNT(sc.productid) AS ProductCount
--p.discount,
--p.quantity AS DiscountQuantity,
--p.code
FROM
tblShoppingCarts sc,
tblProducts p
WHERE
sc.productid = p.[id]
AND sc.[id] = @id
GROUP BY
sc.[id],
sc.publishdate,
sc.modifieddate,
sc.productid,
p.title,
p.shorttitle,
sc.quantity
END
END
GO 1 2205
Thanks everyone for your help!
I finally worked out after a bit of reading exactly how the GROUP BY
statement works and why I would only use it if I where aggregating
information (ie SUM, COUNT etc).
The solution for the stored procedure was:
CREATE PROCEDURE spGetShoppingCarts
@id int = NULL,
@sessionid bigint = NULL
AS
-- Get all shopping carts
IF (@id IS NULL) AND (@sessionid IS NULL)
BEGIN
SELECT
sc.sessionid,
LastUpdated = MAX( sc.publishdate ),
TotalPrice = SUM(sc.quantity * p.retailPrice)
FROM
tblShoppingCarts sc,
tblProducts p
WHERE
sc.productid = p.[id]
GROUP BY
sc.sessionid
ORDER BY
2 DESC
END
ELSE
BEGIN
-- Get shopping cart by session
IF (@id IS NULL)
BEGIN
SELECT
sc.[id],
sc.publishdate,
sc.modifieddate,
sc.productid,
p.[title] AS ProductTitle,
p.[shorttitle] AS ProductShortTitle,
sc.quantity,
TotalPrice = (sc.quantity * p.retailPrice),
sc.discount,
sc.code
FROM
tblShoppingCarts sc,
tblProducts p
WHERE
sc.productid = p.[id]
AND sc.[sessionid] = @sessionid
END
-- Get shopping cart by id
ELSE
BEGIN
SELECT
sc.[id],
sc.publishdate,
sc.modifieddate,
sc.productid,
p.[title] AS ProductTitle,
p.[shorttitle] AS ProductShortTitle,
sc.quantity,
TotalPrice = (sc.quantity * p.retailPrice),
sc.discount,
sc.code
FROM
tblShoppingCarts sc,
tblProducts p
WHERE
sc.productid = p.[id]
AND sc.[id] = @id
GROUP BY
sc.[id],
sc.publishdate,
sc.modifieddate,
sc.productid,
p.title,
p.shorttitle,
sc.quantity,
sc.discount,
sc.code ,
p.retailPrice
END
END
GO
"Stephen McCormack" <st******@mwebsolutions.com.au> wrote in message
news:Xd****************@news-server.bigpond.net.au... Hi,
I have a pretty simple problem for a SQL programmer regarding GROUPINGS:
I have two tables tblShoppingCarts and tblProducts. The first table stores all shopping cart data. I would like to retrieve all this data (cart and all related product information) BUT need to GROUP BY tblShoppingCarts.sessionid.
Also, any suggestions on fields to include in the shopping cart would be much appreciated.
Thanks for your help.
NOTE: To retreive all cart information run the stored procedure EXEC spGetShoppingCarts NULL, NULL
--------------------------------------------
CREATE TABLE [dbo].[tblProducts] ( [id] [int] IDENTITY (1, 1) NOT NULL , [category] [int] NOT NULL , [publishdate] [smalldatetime] NOT NULL , [title] [varchar] (100) NOT NULL , [shorttitle] [varchar] (30) NULL , [version] [float] NOT NULL , [build] [int] NOT NULL , [shortDescription] [varchar] (1000) NULL , [description] [varchar] (4000) NOT NULL , [retailPrice] [money] NOT NULL , [oemPrice] [money] NULL , [hasImage] [bit] NOT NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[tblShoppingCarts] ( [id] [int] IDENTITY (1, 1) NOT NULL , [sessionid] [bigint] NOT NULL , [publishdate] [smalldatetime] NOT NULL , [modifieddate] [smalldatetime] NULL , [productid] [int] NOT NULL , [quantity] [int] NOT NULL ) ON [PRIMARY] GO
CREATE PROCEDURE spGetShoppingCarts
@id int = NULL, @sessionid bigint = NULL
AS
-- Get all shopping carts IF (@id IS NULL) AND (@sessionid IS NULL)
BEGIN
SELECT sc.[id], sc.sessionid, sc.publishdate, sc.modifieddate, sc.productid, p.[title] AS ProductTitle, p.[shorttitle] AS ProductShortTitle, sc.quantity, COUNT(sc.sessionid) AS ProductCount --p.discount, --p.quantity AS DiscountQuantity, --p.code FROM tblShoppingCarts sc, tblProducts p WHERE sc.productid = p.[id] GROUP BY sc.[id], ---I WANT TO GROUP BY SESSIONID!!!!!!!!!!!!!!!!!! WHY DOESNT THIS WORK?????? sc.sessionid, sc.publishdate, sc.modifieddate, sc.productid, p.title, p.shorttitle, sc.quantity
ORDER BY sc.[modifieddate] DESC
END
ELSE
BEGIN
-- Get shopping cart by session IF (@id IS NULL)
BEGIN
SELECT sc.[id], sc.publishdate, sc.modifieddate, sc.productid, p.[title] AS ProductTitle, p.[shorttitle] AS ProductShortTitle, sc.quantity, ProductCount = ( SELECT COUNT(sc.productid) FROM tblShoppingCarts sc WHERE sc.sessionid = @sessionid ) --p.discount, --p.quantity AS DiscountQuantity, --p.code FROM tblShoppingCarts sc, tblProducts p WHERE sc.productid = p.[id] AND sc.[sessionid] = @sessionid
END
-- Get shopping cart by id ELSE
BEGIN
SELECT sc.[id], sc.publishdate, sc.modifieddate, sc.productid, p.[title] AS ProductTitle, p.[shorttitle] AS ProductShortTitle, sc.quantity, COUNT(sc.productid) AS ProductCount --p.discount, --p.quantity AS DiscountQuantity, --p.code FROM tblShoppingCarts sc, tblProducts p WHERE sc.productid = p.[id] AND sc.[id] = @id
GROUP BY sc.[id], sc.publishdate, sc.modifieddate, sc.productid, p.title, p.shorttitle, sc.quantity END
END GO
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Mike |
last post by:
I am sure that I am making a simple boneheaded mistake and I would
appreciate your help in spotting in. I have just installed
apache_2.0.53-win32-x86-no_ssl.exe
php-5.0.3-Win32.zip...
|
by: Tom Loach |
last post by:
Our system administrator set up an NT server group in order to allow
our users to login to our application via https to our sql server.
The group appears as a User in SQL Server when you look at...
|
by: Chad Richardson |
last post by:
I've always been mistified why you can't use a column alias in the group by
clause (i.e. you have to re-iterate the entire expression in the group by
clause after having already done it once in the...
|
by: BillD |
last post by:
I'm trying to derive a schema from a base schema. I want to redefine
a "group" from the base schema in my derived schema in order to add
more options to the "choice" aggregate (see schema1.xsd...
|
by: michael |
last post by:
Is it possible to get all href URLs contained in a unordered list and place
them in an array?
Or in fact two different arrays, differently named one for each <ul> group?
<ul>
<li><a...
|
by: Darin |
last post by:
I have a report that sub-totals on a group, then grand-totals at the
report footer. If there's only one group, the sub-total and grand
total are redundant, so I only want to show one of them. I...
|
by: David Horowitz |
last post by:
Hi folks.
I need to create a report that has a Group Header that pulls certain data
from the Detail section. It's something like this:
+--Report----------------------------------------
|...
|
by: Sameh Ahmed |
last post by:
Hello there
IsInrole gives ya the means to check if the current or impersonated user
belongs to a specific windows role or group.
is there a way to do the same without using ADSI to check if...
|
by: jon|k |
last post by:
hi all--
i need to do a transformation that removes duplicates (among other
things). to accomplish that, i'm trying to use for-each-group, but it
doesn't work. i need to select for duplicates by...
|
by: Sebastian |
last post by:
Hello all
I have a report where I have two nested groups.
I know there are only three standard options for running sum: None,
Over Group and Over All.
I have a MyTextBox in detail section where...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
| |