我有一个邮政编码表和一个存储过程来计算X半径内的所有邮政编码,给定一个邮政编码和一个半径。
例如,要找到距离10001 200英里内的所有邮政编码,我会输入CALL zip(10001,200)
,它会显示每个邮政编码。
在新栏目“hradius”中,我希望所有邮政编码都在该行邮政编码的200英里范围内。
我对SQL很新,谢谢你的帮助。
答案 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
您应该花些时间了解正确的表格设计和规范化,以及如何将表格连接在一起以帮助您理解这些概念。