如何查询行中是不是存在值将值添加到另一个字段?

Posted

技术标签:

【中文标题】如何查询行中是不是存在值将值添加到另一个字段?【英文标题】:How do I make a query for if value exists in row add a value to another field?如何查询行中是否存在值将值添加到另一个字段? 【发布时间】:2013-04-19 15:17:07 【问题描述】:

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

【问题讨论】:

对不起,我应该这么说。我还有一张包含所有医院和 ID 名称的表。 好,基兰。我认为您应该向我们展示相关表中的简要数据样本,并向我们展示您希望查询从这些样本数据中返回什么。 不能更同意@HansUp。如果可能,请始终提供示例输入/输出。 好的,这是相当机密的信息,所以我会稍微改变一下细节。给我一点时间。谢谢 【参考方案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/

【讨论】:

谢谢你,我会试一试,然后更新问题。【参考方案2】:

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

Access DB update one table with value from another

【讨论】:

我确实查过了,但找不到正确的链接。可能是因为我像个笨蛋一样打字。【参考方案3】:

你可以这样做:

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

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

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

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

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

假设你有两张桌子

HOSPITALS
id
name
city
state

BIRTHS
id
hospitalid
babysname
gender
mothersname
fathername

您无需将 City 列包含在 Births 表中即可获得婴儿的出生城市,只需将各表连接到 hospital.id =births.hospitalid。

【讨论】:

【参考方案4】:

检查完您的 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

关键点是避免将医院 ID 和名称同时存储在 Health_Professionals 表中。仅存储 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];

【讨论】:

以上是关于如何查询行中是不是存在值将值添加到另一个字段?的主要内容,如果未能解决你的问题,请参考以下文章

根据查找值将值从一张表匹配并粘贴到另一张表中

根据是/否字段的值将记录从一个表复制到另一个表

sqlite - 根据字段值将 2 行中的相同字段组合成 2 列

将值和数组添加到 PDO 执行方法

根据另一个字段的值将字符串附加到 varchar2 字段

如何使用会话将值从一个php页面传递到另一个页面