0

我有一个访问数据库,我想根据他们所在的医院在每行末尾的列中添加一个值。这是一个单独的值。例如 - 名为“St. James Hospital”的医院在单独的字段中具有“3”的 ID。我如何使用查询而不是手动浏览整个数据库来做到这一点? 这里的例子

4

4 回答 4

1

你可以这样做:

         update yourTable
         set yourFinalColumnWhateverItsNameIs = {your desired value}
         where someColumn = 3

表格中在 someColumn 列中有 3 的每一行都会将最后一列设置为您想要的值。

如果这不是您想要的,请让您的问题更清楚。你想把医院的名字放到这张表里吗?如果是这样,那不是一个好主意,有更好的方法来实现这一点。

此外,如果具有特定值 (3) 的每一行都获得该值,您可以简单地将其添加到另一个(即医院)表中。无需在指向 Hospitals 表的表中各处重复。

PS这是我的意思的一个例子:

假设你有两张桌子

HOSPITALS
id
name
city
state

BIRTHS
id
hospitalid
babysname
gender
mothersname
fathername

您可以获取婴儿的出生城市,而无需在 Births 表中包含 City 列,只需加入 hospital.id =births.hospitalid 上的表即可。

于 2013-04-19T16:29:55.897 回答
1

不是最好的解决方案,但你可以这样做:

create table new_table as
select id, case when hospital="St. James Hospital" then 3 else null
from old_table

或者,更好的选择是创建一个包含hospital_name 和hospital_id 列的表。然后,您可以创建一个外键关系,该关系将为您创建映射,并强制执行数据完整性。跨两个表的连接将产生您想要的结果。

在这里阅读:

http://net.tutsplus.com/tutorials/databases/sql-for-beginners-part-3-database-relationships/

于 2013-04-19T15:35:29.230 回答
1

您的问题的答案是 JOIN+UPDATE。我相当确定如果您查找,您会找到以下链接。

Access DB 用另一个表的值更新一个表

于 2013-04-19T15:36:38.377 回答
1

在检查您的 ACCDB 文件后,我建议您考虑以不同的方式设置表。

Health_Professionals

ID First Name Second Name Position hospital_id
1  John       Doe         PI                 2
2  Joe        Smith       Co-PI              1
3  Sarah      Johnson     Nurse              3

餐桌医院

hospital_id Hospital
          1 Beaumont
          2 St James
          3 Letterkenny Hosptial

一个关键点是避免在Health_Professionals表中存储医院 ID 和名称。仅存储 ID。当您需要查看名称时,使用医院 ID 加入Hospitals表并从那里获取名称。

这种设计的一个有用的副作用是,如果有人拼错了医院名称,例如“医院”,您只需在一个地方更正该错误。每当有意重命名医院时,情况也是如此。

基于这些表,下面的查询返回这个结果集。

ID Second Name First Name Position hospital_id Hospital
1  Doe         John       PI                 2 St James
3  Johnson     Sarah      Nurse              3 Letterkenny Hosptial
2  Smith       Joe        Co-PI              1 Beaumont

SELECT
    hp.ID,
    hp.[Second Name],
    hp.[First Name],
    hp.Position,
    hp.hospital_id,
    h.Hospital
FROM
    Health_Professionals AS hp
    INNER JOIN Hospitals AS h
    ON hp.hospital_id = h.hospital_id
ORDER BY
    hp.[Second Name],
    hp.[First Name];
于 2013-04-19T16:55:21.630 回答