Solved

Sql Syntax

Posted on 2008-10-06
8
217 Views
Last Modified: 2012-05-05
Hello, Im having trouble writing a sql query.   I need to select l.LinkID, l.NavigateURL, l.ImageFile, l.Status and then also get a sum of rating field and a count of LinkID field where LinkID is equal to the one in the select statment.  My query below returns incorrect results for the count and sum fields.
 How can i fix this?

Thanks


SELECT l.LinkID, l.NavigateURL, l.ImageFile, l.Status, Sum(u.rating) As Rating, Count(o.LinkID) As Clicks

FROM LinkIndex l, UserRatings u, OutboundTraffic o

Where l.LinkID = u.LinkID and l.LinkID = o.LinkID

and l.Status In(0,1,2) and l.UserID = 1001 

Group By l.LinkID, l.NavigateURL, l.ImageFile, l.Status

Open in new window

0
Comment
Question by:grogo21
  • 3
  • 3
  • 2
8 Comments
 
LVL 59

Expert Comment

by:Kevin Cross
ID: 22655245
What is the actual data and expected results.  My current understanding is you want the sum for the whole entire list and likewise for count.  If that is true something like this would work.
WITH linkCTE AS (

	SELECT l.LinkID, l.NavigateURL, l.ImageFile, l.Status

	FROM LinkIndex l, UserRatings u, OutboundTraffic o

	Where l.LinkID = u.LinkID and l.LinkID = o.LinkID

	and l.Status In(0,1,2) and l.UserID = 1001 

)

SELECT DISTINCT *

,  (SELECT Sum(u.rating) FROM linkCTE) As Rating

,  (SELECT Count(o.LinkID) FROM linkCTE) As Clicks

FROM linkCTE

Open in new window

0
 

Author Comment

by:grogo21
ID: 22655460
Hello,

I need to select LinkIndex.LinkID, LinkIndex.NavigateURL, LinkIndex.ImageFile, LinkIndex.Status.
 
I also need to select sum(UserRatings.Rating) of all records from UserRatings Table where UserRatings.LinkID = LinkIndex.LinkID(The Link id in the select statment above)
I also need to select count(*) of all records from OutboundTraffic Table where OutboundTraffic .LinkID = LinkIndex.LinkID(The Link id in the select statment above)

I tried your query and i got error:
The multi-part identifier "u.rating" could not be bound.

Thanks!
0
 
LVL 5

Expert Comment

by:Cvijo123
ID: 22655486
can u try this one will it work:
It can be done better my code, but i dont know wich table multiple your records so this way should work i think
SELECT

	l.LinkID,

	l.NavigateURL,

	l.ImageFile,

	l.Status,

	u.rating AS Rating,

	o.Clicks AS Clicks

FROM LinkIndex l

inner join ( 

		Select sum(rating) as Rating, LinkID

		from UserRatings 

		group by LinkID

	)

on l.LinkID = u.LinkID

inner join ( 

		Select count(LinkID) as Clicks, LinkID

		from OutboundTraffic

		group by LinkID

	) o

on l.LinkId = o.LinkId

							

Open in new window

0
 
LVL 5

Expert Comment

by:Cvijo123
ID: 22655500
i miss alias after first inner join

so correct syntax should be
	

SELECT

	l.LinkID,

	l.NavigateURL,

	l.ImageFile,

	l.Status,

	u.rating AS Rating,

	o.Clicks AS Clicks

FROM LinkIndex l

inner join ( 

		Select sum(rating) as Rating, LinkID

		from UserRatings 

		group by LinkID

	) u

on l.LinkID = u.LinkID

inner join ( 

		Select count(LinkID) as Clicks, LinkID

		from OutboundTraffic

		group by LinkID

	) o

on l.LinkId = o.LinkId

							

Open in new window

0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 59

Assisted Solution

by:Kevin Cross
Kevin Cross earned 100 total points
ID: 22655520
In that case, simply use something like what was just suggested.
0
 

Author Comment

by:grogo21
ID: 22655642
Cvijo123 your query looks good but there is one thing I still need.  When LinkId is not in OutboundLinks or UserRatings Table it does not return anything.  How can I select 0 for u.rating AS Rating or o.Clicks AS Clicks if they are not contained in the tables?

Thanks
0
 
LVL 5

Accepted Solution

by:
Cvijo123 earned 400 total points
ID: 22655651
this should do it
SELECT

        l.LinkID,

        l.NavigateURL,

        l.ImageFile,

        l.Status,

        isnull(u.rating,0) AS Rating,

        isnull(o.Clicks,0) AS Clicks

FROM LinkIndex l

left join ( 

                Select sum(rating) as Rating, LinkID

                from UserRatings 

                group by LinkID

        ) u

on l.LinkID = u.LinkID

left join ( 

                Select count(LinkID) as Clicks, LinkID

                from OutboundTraffic

                group by LinkID

        ) o

on l.LinkId = o.LinkId

Open in new window

0
 

Author Comment

by:grogo21
ID: 22655951
YESS!!

Thanks so much!
0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Join & Write a Comment

Suggested Solutions

Long way back, we had to take help from third party tools in order to encrypt and decrypt data.  Gradually Microsoft understood the need for this feature and started to implement it by building functionality into SQL Server. Finally, with SQL 2008, …
Naughty Me. While I was changing the database name from DB1 to DB_PROD1 (yep it's not real database name ^v^), I changed the database name and notified my application fellows that I did it. They turn on the application, and everything is working. A …
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now