SQL - 使用存储过程更新表

时间:2014-01-21 20:35:00

标签: sql sql-server stored-procedures

我有一个邮政编码表和一个存储过程来计算X半径内的所有邮政编码,给定一个邮政编码和一个半径。

例如,要找到距离10001 200英里内的所有邮政编码,我会输入CALL zip(10001,200),它会显示每个邮政编码。

在新栏目“hradius”中,我希望所有邮政编码都在该行邮政编码的200英里范围内。

我对SQL很新,谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

不要将具有多个值的字符串推入一个字段。创建一个相关表以将一个邮政编码链接到多个:

ZipOrigin   ZipDest   Distance
12345       23456     150
12345       34567     175
...

(距离是可选的 - 例如,您可以使用它来查找任何半径小于X的所有邮政编码)

答案 1 :(得分:0)

在这种情况下,如果您想预先生成匹配列表,那么最好使用单独的表来进行匹配。您将有两个表:一个用于您的邮政编码,另一个用于匹配。第二个表将有两列,一列用于源邮政编码,另一列用于X英里内的匹配邮政编码(在本例中为200)。每场比赛都会有一个单独的行。存储过程的结果应输出到第二个表。完成后,您可以使用如下查询:

SELECT zip.zipcode, zipJoin.zipcode
FROM zipCodes zip
    INNER JOIN zipCodeMatches zipJoin
        ON zip.zipcode = zipJoin.sourceZipCode
WHERE zip.zipcode = @zip

您应该花些时间了解正确的表格设计和规范化,以及如何将表格连接在一起以帮助您理解这些概念。