php - 通过 MySQL 排序
问题描述
好的,这是我的数据库的基本数据结构......至少是我需要担心和使用的部分......
id
address
city
state
zipcode (5 digit zip, looked up via usps by address)
realtor_id (unique id for the realtor)
type_of_work
当一个订单进入网站并想要一个标志时,他们会订购一个安装,大多数时候,地址就像“1550 Libby Street”一样,很多时候,他们没有输入最后一部分,“大道、街道、道路、法院等”,因此它们的输入方式并不总是相同。
当一个订单被放到网站上并且想要一个标志被撤下时,他们会下令移除,他们通常不会以相同的方式输入地址,这一次,他们可能会将地址输入为“1550 Libby St”。
现在,每一个订单进来,都是一个单独的插入到数据库中。
我想弄清楚该怎么做,当一个安装订单进来时,插入到数据库中,如果删除相同的地址,更新原始插入。
我正在尝试对其进行设置,以便我可以搜索数据库并找到已安装但尚未删除的地址,以便我可以在地图上显示它们。如果我可以保持数据库的原样,并且能够找到已安装但尚未删除的地址,那么这也可以。那有意义吗?
我试图找到已经发布的答案,但不知道如何表达问题或提出问题。对不起,如果它已经发布了。
解决方案
您似乎在这里有几个单独的问题:
地址名称不一致
如果不说服您的客户每次都正确输入地址,这将很难解决。给他们单独的字段(地址行 1/2、城市、州、邮编)会有所帮助,因为它会提示他们输入整个地址。
或者,您可能希望让他们查看他们已安装的所有作业,然后选择需要删除的作业。如果他们从不输入两次地址,那么他们就不会弄错了!
安装后拆除
当客户决定移除标志时,您不应该覆盖特定地址的客户的记录。如果他们取消删除怎么办?如果他们想要在那里安装另一个标志,而您现在不知道您之前已经在该站点上工作过怎么办?
相反,您应该为每个事件在数据库中插入一个新行。
查找尚未删除的安装
有点不清楚是什么id
- 这是唯一标识每一行,还是每个工作都有自己的id
?
我会继续假设每个工作都有自己的id
.
由于 MySQL 不能做EXCEPT
,你需要做一个WHERE NOT IN
查询来代替:
SELECT
signs.id, signs.address
FROM
signs
WHERE
signs.type_of_work = 'INSTALLATION'
AND
signs.id NOT IN
(
SELECT signs2.id FROM signs2 WHERE signs2.type_of_work = 'REMOVAL'
)
(请原谅我的风格;我更习惯 Postgres ......)
这应该选择每个具有安装工作的工作帽的 ID 和地址,除非该工作id
与拆除工作相关。
推荐阅读
- html - symfony numberType 在 [mapped=>false] 中不起作用
- firebase - How to store only valid data in Firestore
- php - 带有附加字符串匹配的 PHP .htaccess 修改/扩展
- scrapy - 为什么我的代码不按照等待参数等待,为什么它不返回 Javascript 呈现的内容?
- html - 如何在 Blogger 网站的页脚中创建一组水平社交媒体链接
- django - Django:提交表单时,自动填写一个字段
- c# - 无法将文本框文本转换为列表 - WPF
- c# - 在 C# 中使用 LINQ 压缩多个列表是否有更紧凑/更好的方法?
- python - 如何合并 AWS Comprehend batch_detect_key_phrases() ResultList 和 ErrorList
- swift - NSCollectionView、NSCollectionViewItem 和 MVC