繁体   English   中英

MySQL JOIN两个表(联合)

[英]MySQL JOIN two tables (Union)

我有两个MySQL表

第一个是预订

+------------+--------------+---------+
| id         | contact_no   | date    | 
+------------+--------------+---------+
| p1         | 7898787946   | 15-06-05|
| p1         | 7897891562   | 15-06-05|
| p1         | 1546879585   | 15-06-07|
| p2         | 1789546528   | 15-06-07|
| p3         | 7894668265   | 15-06-07| 
+------------+--------------+---------+

第二个是设置

+------------+--------------+------+-----+
| id         | date         | time | max |
+------------+--------------+------+-----+
| p1         | 15-06-06     | 8.00 | 20  |
| p1         | 15-06-07     | 8.00 | 20  |
| p2         | 15-06-07     | 9.00 | 10  |
| p3         | 15-06-08     | 8.00 | 20  | 
+------------+--------------+------+-----+

我需要为特定的id(比如说p1)加入两个表,我想精确地生成这个表。 count是特定日期和ID的行数。 (例如,p1的15-06-05的计数为2)

+------------+--------------+------+-----+
| count      | date         | time | max |
+------------+--------------+------+-----+
| 2          | 15-06-05     | null | null|
| 0          | 15-06-06     | 8.00 | 20  |
| 1          | 15-06-07     | 8.00 | 20  |
+------------+--------------+------+-----+

什么是MySQL查询可用于生成此第三张表

我尝试了这个SELECT COUNT(booking.date)作为'count',setup.time,booking.date,setup.max。从预订中LEFT JOIN在booking.date = setup.date和booking.id = setup.id和预订中进行设置。 id ='p1'GROUP BY booking.date ORDER BY booking.date ASC“

这样的事情,但我目前无法检查。 如果没有MySql full join这是很痛苦的:

SELECT COALESCE(id1, id2), COALESCE(date1, date2), COUNT(*), MAX(time), MAX(max)
FROM
    (SELECT b.id as id1, s.id as id2, b.date as date1, s.date as date2, s.time, s.max FROM booking b
     LEFT JOIN setup s on b.id = s.id and b.date = s.date
     WHERE b.id = 'p1'
     UNION
     SELECT b.id as id1, s.id as id2, b.date as date1, s.date as date2, s.time, s.max FROM booking b
     RIGHT JOIN setup s on b.id = s.id and b.date = s.date
     WHERE s.id = 'p1') t
GROUP BY COALESCE(id1, id2), COALESCE(date1, date2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM