[英]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.