Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL join two SELECT statements - fairly easy

Tags:

sql

join

mysql

I am trying to combine two query results into an output that looks like:

datetime |  BC  |  AC     
----------------------
sun      |  1.0 |  0.9

through a sql call located below (in MySQL). I can make the individual statements query properly but the combined join does not work. Any suggestions? Thanks! Sorry about the formatting.

SELECT z.datetime, (z.w_1 + z.w_2 + z.w_3) as 'BC', (b.w_1 + b.w_2 + b.w_3) as 'AC'  
 (FROM monitor_data a  
   WHERE mon_id = "site A"  
     AND datetime > "2015-04-02 04:30:00" 
     AND datetime < "2015-04-02 06:30:00") z

 JOIN (SELECT b.datetime, b.w_1, b.w_2, b.w_3      
   FROM monitor_data b 
     WHERE mon_id = "site B"  
       AND datetime> "2015-04-02 04:30:00" 
       AND datetime < "2015-04-02 06:30:00") y 
 ON y.datetime = z.datetime
like image 777
SteelyDanish Avatar asked Aug 17 '26 06:08

SteelyDanish


1 Answers

You haven't got the syntax quite right. To join two derived tables (z and y), you'll need to ensure that each derived table has a syntactically complete SELECT statement. Also, remember that the second derived table is now aliased as 'y', not b:

SELECT z.datetime, (z.w_1 + z.w_2 + z.w_3) as BC, 
       (y.w_1 + y.w_2 + y.w_3) as AC
FROM 
(
   SELECT a.datetime, a.w_1, a.w_2, a.w_3
   FROM monitor_data a 
   WHERE mon_id = 'site A' 
    AND datetime > '2015-04-02 04:30:00' AND datetime < '2015-04-02 06:30:00'
) z
JOIN 
(
  SELECT b.datetime, b.w_1, b.w_2, b.w_3
  FROM monitor_data b 
  WHERE mon_id = 'site B' 
    AND datetime > '2015-04-02 04:30:00' AND datetime < '2015-04-02 06:30:00'
) y
ON y.datetime = z.datetime;
like image 137
StuartLC Avatar answered Aug 18 '26 18:08

StuartLC