我有一张桌子
id_user, hour, medition 1 0 100 1 1 101 1 14 102 2 5 108 2 17 103
如何为任何用户用0值完成不存在的小时数?
例子
1 0 100 1 1 101 1 2 0 1 3 0 ...
答案 0 :(得分:2)
你不应该这样做,因为它是多余的。只添加有人有几个小时的条目。在你的程序中,只需对其进行编码,这样如果找不到记录,则会有零小时。一个例子,在PHP中:
$row = mysql_fetch_array(mysql_query("select * from myTable where id_user = 1 and hour = 3;")); if (!$row) $hours = 0; else $hours = $row['medition'];
答案 1 :(得分:1)
构建一个表小时,用1到24之间的数字填充它,然后使用它来查询主表的外连接。 - 用0
替换空值编辑以添加快速示例:
SELECT id_user, hour, NVL(medition,0)
FROM `hours` as h
LEFT JOIN `myTable`
ON `hours`.`hour` = `myTable`.`hour`
答案 2 :(得分:0)
查看我的解决方案,了解有关日期的类似问题;
Select all months within given date span, including the ones with 0 values
您可以按照Randy的建议创建一个小时表,而不是我创建的日期,应该很容易修改查询以返回您需要的数据...
希望它有所帮助!