Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
哪种SQL可以工作?_Sql_Database_Sqlite - Fatal编程技术网

哪种SQL可以工作?

哪种SQL可以工作?,sql,database,sqlite,Sql,Database,Sqlite,我正在努力为我的应用程序找出最佳的数据库结构和SQL 情况是这样的: 吉姆和约翰需要每周更新他们的时间表,以适应不同的需求 项目。当他们这样做时,他们使用一个html表单来插入他们的 小时数基于一周最后一天的日期 这很好,将插入一个包含名称、项目、日期和小时的新行 但是,如果jim和john的工作时间超过预期,并且需要更新他们的时间表,我希望他们能够使用该表单,并且如果名称、项目名称和日期与提交的内容相匹配,该表单将更新数据库上的小时数栏 要插入的SQL语句: INSERT OR REPLACE

我正在努力为我的应用程序找出最佳的数据库结构和SQL

情况是这样的:

吉姆和约翰需要每周更新他们的时间表,以适应不同的需求 项目。当他们这样做时,他们使用一个html表单来插入他们的 小时数基于一周最后一天的日期

这很好,将插入一个包含名称、项目、日期和小时的新行

但是,如果jim和john的工作时间超过预期,并且需要更新他们的时间表,我希望他们能够使用该表单,并且如果名称、项目名称和日期与提交的内容相匹配,该表单将更新数据库上的小时数栏

要插入的SQL语句:

INSERT OR REPLACE INTO RESOURCE(NAME, DATE, PROJECT, HOURS) VALUES ('"+ name+ "', '"+ date+ "', '"+ project+ "','" + hours + "');
迄今为止的工作:

我已经在SQLITE数据库上创建了下面的数据库结构

CREATE TABLE RESOURCE (
    name VARCHAR(16),
    date DATE,
    project VARCHAR(16),
    hours VARCHAR(16)
)
为了解决我的问题,我创建了以下索引

CREATE UNIQUE INDEX myindex ON RESOURCE(NAME, DATE, PROJECT)
然而,问题是当jim更新了与john相同的日期、项目和时间时,john,Johns row被替换,只剩下jims

希望我已经解释清楚这个问题,如果没有请让我知道,我会提供任何其他需要


我的问题是:我可以用我的SQL或DB结构更改什么,以允许上述场景工作?

我得到的是,当jim/jhon再次输入计时时,执行更新查询,更新整个记录,而不是更新jim/jhons自己的记录。主要原因是您的表中没有任何唯一的键/主键,这就是为什么您的查询更新了很多

您需要做的是有一个键列,并根据该键更新它们的记录,您将在where子句中使用类似的内容


其中RESOURCE_ID=@RID//ID是该特定资源的

我认为您应该有一个名为resourceId的唯一列,这将是资源jim和john的标识。还有jim是如何为john更新时间表的?resourceid列是如何工作的?如果jim或john在同一日期、不同项目和不同时间有多个条目,会发生什么情况?然后您只需根据资源id更新行。@AshReva我不确定我是否理解。DB如何知道更新哪个id?这将从您的网页发送