0

我有以下 sql 查询数据库并从 4 个不同的表中提取信息。

 SELECT d.item AS day, m.item as month, y.item as yr, l.item as local
 FROM date_day d
 JOIN date_month m ON d.recid=m.recid
 JOIN date_year y ON d.recid=y.recid
 JOIN location l ON d.recid=l.recid
 WHERE d.recid='cneta0ld00s6'

这些表中的一个或多个可能为空且不包含值。特别是在日期字段上。上述任何一个都是空的或不存在的,会导致整个事情失败吗?我特别担心 date_day,因为我知道 mysql 没有 FUll JOIN。

有什么想法吗?

4

2 回答 2

1

为了确保我总是从表中获取数据,即使它为空,我在另一个表中添加了主表,一个总是包含 recid 的表,表是照片。这样我可以确保查询总是返回一些东西,即使它有很多空值。这意味着我也可以使用左连接。

 SELECT p.photo_file, d.item AS day, m.item as month, y.item as yr, l.item as local
  FROM photo p
 LEFT JOIN date_day d ON p.recid=d.recid
 LEFT JOIN date_month m ON p.recid=m.recid
 LEFT JOIN date_year y ON p.recid=y.recid
 LEFT JOIN location l ON p.recid=l.recid
 WHERE p.recid='paul'
于 2012-09-12T14:38:37.837 回答
1

我觉得:

SELECT d.item AS day, m.item as month, y.item as yr, l.item as local
 FROM date_day d
 LEFT JOIN date_month m ON d.recid=m.recid
 LEFT JOIN date_year y ON d.recid=y.recid
 LEFT JOIN location l ON d.recid=l.recid
 WHERE d.recid='cneta0ld00s6'

会做你想做的事

于 2012-09-12T11:31:34.927 回答