Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多表联接不返回null/blank时需要帮助_Mysql - Fatal编程技术网

Mysql 多表联接不返回null/blank时需要帮助

Mysql 多表联接不返回null/blank时需要帮助,mysql,Mysql,我有三个表(s_place,s_place,s_bing,s_place,s_yahoo),它们具有相同的模式,并且包含来自三个不同来源的类似结果。我想要的是一个查询,它返回来自三个表的所有结果,这三个表匹配给定的s___id、s_q_id和日期 +-----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Def

我有三个表(s_place,s_place,s_bing,s_place,s_yahoo),它们具有相同的模式,并且包含来自三个不同来源的类似结果。我想要的是一个查询,它返回来自三个表的所有结果,这三个表匹配给定的s___id、s_q_id和日期

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(10)      | NO   | PRI | NULL    | auto_increment |
| s_u_id          | int(10)      | NO   |     | NULL    |                |
| s_q_id          | int(10)      | NO   |     | NULL    |                |
| place           | int(10)      | NO   |     | NULL    |                |
| date            | int(10)      | YES  |     | NULL    |                |
| fullurl         | varchar(255) | NO   |     | NULL    |                |
| above_today     | varchar(255) | NO   |     | NULL    |                |
| above_yesterday | varchar(255) | NO   |     | NULL    |                |
| below_today     | varchar(255) | NO   |     | NULL    |                |
| below_yesterday | varchar(255) | NO   |     | NULL    |                |
| yesterday       | int(11)      | NO   |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+
对于相同的s_____id、s_q_id和日期,一个表中的结果很可能比另一个表中的结果多。在这种情况下,它应该为没有数据的表返回空行或空行

我已经使用下面的查询实现了这一点,但是它不会返回null/空格

SELECT s_place.s_u_id, s_place.s_q_id, `s_place`.place as place, `s_place`.fullurl as fullurl, `s_place`.date as date, s_place_bing.place as b_place,`s_place_bing`.fullurl as b_fullurl, s_place_bing.date as b_date, s_place_yahoo.place as y_place, `s_place_yahoo`.fullurl as y_fullurl, s_place_yahoo.date as y_date
from s_place
left join s_place_bing on s_place_bing.s_q_id = s_place.s_q_id and s_place_bing.date = s_place.date
left join s_place_yahoo on s_place_yahoo.s_q_id = s_place.s_q_id and s_place_yahoo.date = s_place.date
where s_place.s_u_id = 1 and s_place.s_q_id = 64
order by s_place.date desc

+--------+--------+-------+----------------------+------------+---------+--------------------------+------------+---------+-------------------+------------+
| s_u_id | s_q_id | place | fullurl              | date       | b_place | b_fullurl                | b_date     | y_place | y_fullurl         | y_date     |
+--------+--------+-------+----------------------+------------+---------+--------------------------+------------+---------+-------------------+------------+
|      1 |     64 |    39 |        rrr.co.uk     | 1292112000 |      30 |        rrr.co.uk         | 1292112000 |       6 |        rrr.co.uk  | 1292112000 |
|      1 |     64 |    39 |        rrr.co.uk     | 1292112000 |      65 |        rrr.co.uk search/ | 1292112000 |       6 |        rrr.co.uk  | 1292112000 |
|      1 |     64 |    36 |        rrr.co.uk     | 1292025600 |      30 |        rrr.co.uk         | 1292025600 |       6 |        rrr.co.uk  | 1292025600 |
|      1 |     64 |    36 |        rrr.co.uk     | 1292025600 |      64 |        rrr.co.uk search/ | 1292025600 |       6 |        rrr.co.uk  | 1292025600 |
|      1 |     64 |    40 |        rrr.co.uk     | 1291939200 |      66 |        rrr.co.uk search/ | 1291939200 |    9999 |                   | 1291939200 |
|      1 |     64 |    40 |        rrr.co.uk     | 1291939200 |      29 |        rrr.co.uk         | 1291939200 |    9999 |                   | 1291939200 |
|      1 |     64 |    38 |        rrr.co.uk     | 1291852800 |      29 |        rrr.co.uk         | 1291852800 |       6 |        rrr.co.uk  | 1291852800 |
|      1 |     64 |    38 |        rrr.co.uk     | 1291852800 |      68 |        rrr.co.uk search/ | 1291852800 |       6 |        rrr.co.uk  | 1291852800 |
这就是它应该如何返回数据

+--------+--------+-------+----------------------+------------+---------+--------------------------+------------+---------+-------------------+------------+
| s_u_id | s_q_id | place | fullurl              | date       | b_place | b_fullurl                | b_date     | y_place | y_fullurl         | y_date     |
+--------+--------+-------+----------------------+------------+---------+--------------------------+------------+---------+-------------------+------------+
|      1 |      4 |    39 |        rrr.co.uk     | 1292112000 |      30 |        rrr.co.uk         | 1292112000 |       6 |        rrr.co.uk  | 1292112000 |
|      1 |     64 |       |                      |            |      65 |        rrr.co.uk search/ | 1292112000 |         |                   |            |
|      1 |     64 |    36 |        rrr.co.uk     | 1292025600 |      30 |        rrr.co.uk         | 1292025600 |       6 |        rrr.co.uk  | 1292025600 |
|      1 |     64 |       |                      |            |      64 |        rrr.co.uk search/ | 1292025600 |         |                   |            |
|      1 |     64 |    40 |        rrr.co.uk     | 1291939200 |      66 |        rrr.co.uk search/ | 1291939200 |    9999 |                   | 1291939200 |
|      1 |     64 |       |                      |            |      29 |        rrr.co.uk         | 1291939200 |         |                   |            |
|      1 |     64 |    38 |        rrr.co.uk     | 1291852800 |      29 |        rrr.co.uk         | 1291852800 |       6 |        rrr.co.uk  | 1291852800 |
|      1 |     64 |       |                      |            |      68 |        rrr.co.uk search/ | 1291852800 |         |                   |            |
希望有人能帮忙。干杯,Matt

请注意,在您想要的结果集中,唯一完全填充的列来自您的
s\u place\u bing
表。因此,从您显示的结果集来看,您应该
左连接
s_place
s_place\u yahoo
表到
s_place\u bing

话虽如此,您当前的查询是按
s_place.date desc
排序的,但您所需的结果集在该字段中为空/空

这会给你想要的结果吗

SELECT 
    b.s_u_id, b.s_q_id, 
    p.place AS p_place, p.fullurl AS p_fullurl, p.date AS p_date,
    b.place AS b_place, b.fullurl AS b_fullurl, b.date AS b_date, 
    y.place AS y_place, y.fullurl AS y_fullurl, y.date AS y_date
FROM s_place_bing b 
LEFT JOIN s_place p ON b.s_q_id = p.s_q_id AND b.date = p.date
LEFT JOIN s_place_yahoo y ON b.s_q_id = y.s_q_id AND b.date = y.date
WHERE b.s_u_id = 1 and b.s_q_id = 64
ORDER BY b.date DESC