首先我需要说对不起,因为以前的系统/数据库设计将数据存储在组中,例如>>> A1 - A8(指第A行至第A行第8行)或B4 - B12(指行B第4至第B行第12号) 以字符串格式存储在数据库中。
例如
========================
= seat = condition =
========================
= A1 - A8 =好=
= B4 - B12 =坏=
========================
但现在系统改变了!! (一年后)并且需要逐一识别它们,这意味着现在用户输入A4,系统能够返回它的条件(好)或输入A20系统返回未找到
有没有办法(编码方或sql语句)在没有变更数据库设计的情况下满足这个新要求?因为如果在数据库方面进行更改,则需要更改存储数据的方式(还需要做更多的工作)
我希望你们明白我的问题。顺便说一下,我正在使用PHP和mySQL。
答案 0 :(得分:0)
你必须用第一个字符提取行,例如'A'然后将'1'转换为'8'到一个范围(A1,A2 ...,A8)然后做一个in_array来查找它们是否存在在数组中。虽然似乎是非常复杂和昂贵的解决方案
答案 1 :(得分:0)
这是非常糟糕的数据库设计,你应该考虑改变。现在,逻辑将是这样的:
user_seat_letter
和user_seat_number
Condition
)-
row_seat_letter1
,
row_seat_number1
和row_seat_letter2
,row_seat_number2
i)如果user_seat_letter
与row_seat_letter1
不匹配,请抓取下一个
桌子上的座位
ii)如果座位匹配,请检查是否匹配
user_seat_number
等于row_seat_number1
和之间row_seat_number2
a) If true, return the `Condition` of that row
b) Else return 'Not Found'
{{1}}
iii)否则返回'未找到'