如何查询行中是不是存在值将值添加到另一个字段?
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];
【讨论】:
以上是关于如何查询行中是不是存在值将值添加到另一个字段?的主要内容,如果未能解决你的问题,请参考以下文章