Solved

SQL SubSelect Query, join two separate queries

Posted on 2007-03-29
8
1,954 Views
Last Modified: 2012-06-27
I've got two queries that I want to combine into one:

SELECT LogDay, Visits FROM vwNumVisitsByDay WHERE LogYear = 2007 AND LogMonth = 2 ORDER BY LogDay
SELECT LogDay, Pages FROM vwNumPagesByDay WHERE LogYear = 2007 AND LogMonth = 2 ORDER BY LogDay

The first query returns:
1      77
2      93
3      9
4      15
5      83
6      82
7      99
8      90
9      93
10      20
11      14
12      166
13      127
14      125
15      105
16      124
17      11
18      16
19      94
20      95
21      100
22      101
23      77
24      14
25      3
26      91
27      63
28      76

The second,
1      257
2      349
3      24
4      36
5      236
6      334
7      325
8      347
9      308
10      39
11      49
12      416
13      364
14      10
16      174
17      19
18      51
19      259
20      151
21      166
22      415
23      252
24      55
25      6
26      273
27      259
28      162

So I want the results instead to be:
1      77      257
2      93      349
3      9      24
4      15      36
5      83      236
6      82      334
7      99      325
8      90      347
9      93      308
10      20      39
11      14      49
12      166      416
13      127      364
14      125      10
15      105      0
16      124      174
17      11      19
18      16      51
19      94      259
20      95      151
21      100      166
22      101      415
23      77      252
24      14      55
25      3      6
26      91      273
27      63      259
28      76      162

Many thanks!
eq
0
Comment
Question by:equentin
  • 3
  • 3
  • 2
8 Comments
 
LVL 10

Expert Comment

by:lahousden
ID: 18817551
SELECT LogDay, Visits, Pages FROM vwNumVisitsByDay WHERE LogYear = 2007 AND LogMonth = 2 ORDER BY LogDay
0
 

Author Comment

by:equentin
ID: 18817562
They're actually two different views I'm using...
0
 
LVL 5

Expert Comment

by:ethan_mmg
ID: 18817567
SELECT a.LogDay, SUM(a.Pages), SUM(a.Visits)
FROM (
SELECT LogDay, 0 Pages, Visits FROM vwNumVisitsByDay WHERE LogYear = 2007 AND LogMonth = 2 ORDER BY LogDay
Union All
SELECT LogDay, Pages, 0 FROM vwNumPagesByDay WHERE LogYear = 2007 AND LogMonth = 2 ORDER BY LogDay) a
GROUP BY a.LogDay
0
 

Author Comment

by:equentin
ID: 18817589
Hi Ethan,

That returns the following error:

Server: Msg 1033, Level 15, State 1, Line 4
The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.
Server: Msg 170, Level 15, State 1, Line 5
Line 5: Incorrect syntax near ')'.
0
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 
LVL 10

Accepted Solution

by:
lahousden earned 500 total points
ID: 18817639
My bad.  Howsabout:

SELECT LogDay, Visits, Pages
from vwNumVisitsByDay as v
full outer join vwNumPagesByDay as p on p.LogYear = v.LogYear and p.LogMonth = v.LogMonth and p.LogDay = v.LogDay
where (v.LogYear = 2007 and v.LogMonth = 2)
or (p.LogYear = 2007 and p.LogMonth = 2)
0
 
LVL 5

Expert Comment

by:ethan_mmg
ID: 18817653
SELECT a.LogDay, SUM(a.Pages), SUM(a.Visits)
FROM (
SELECT LogDay, 0 Pages, Visits FROM vwNumVisitsByDay WHERE LogYear = 2007 AND LogMonth = 2
Union All
SELECT LogDay, Pages, 0 FROM vwNumPagesByDay WHERE LogYear = 2007 AND LogMonth = 2 ORDER BY LogDay) a
GROUP BY a.LogDay
ORDER BY a.LogDay
0
 
LVL 10

Expert Comment

by:lahousden
ID: 18817658
(...I know... ambiguous names...)

first line should be:

SELECT isnull (v.LogDay, pLogDay) LogDay, v.Visits, p.Pages
0
 

Author Comment

by:equentin
ID: 18817684
That's great, thanks all for your help!
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

'Between' is such a common word we rarely think about it but in SQL it has a very specific definition we should be aware of. While most database vendors will have their own unique phrases to describe it (see references at end) the concept in common …
Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
Via a live example, show how to shrink a transaction log file down to a reasonable size.

708 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

13 Experts available now in Live!

Get 1:1 Help Now