我需要能够精确定位MySQL表中由两个变量定义的值。
在网站的前端,有一个接受各种领域的表格。对于这个例子,让我们关注这两个:
帐号
帐户名称
我开发了一个脚本,该脚本在输入后将使用ajax脚本检查“帐号”,如果找到匹配项,则会在用户选中该字段时显示“帐户名称”。
困难在于从数据库表的格式中找到单个结果。例如:
”SELECT * FROM example_table WHERE name=’$accountnumber’”
提供与帐号相同的所有值的列表,但不提供帐户名的任何记录。
”SELECT * FROM example_table WHERE name=’$accountname’”
提供与帐户名称相同的所有值的列表,但不提供帐号的任何记录。
$record
值是$accountnumber
和$accountname
之间唯一的共同点。
总而言之,我需要帮助创建循环,首先可以使用$accountnumber
值来查找与该数字相关联的$record
值。其次,它将采用确定的$record
值并将其与$accountname
值匹配。每个唯一$accountnumber
值只有一个$accountname
和$record
值。
更新:关于这个问题有好几条评论。为了提供更多背景知识,只有一个表格。可用的最佳鉴别器似乎是title
值。以下是要更详细查看的表格摘要的链接:
https://docs.google.com/file/d/0By2lFlhEzILjbE1uT1hkVURmczA/edit?usp=sharing
因此,最终在此示例中,用户会输入246802
,过滤掉的结果将为Fred’s Account
。
答案 0 :(得分:1)
听起来像是在同一张桌子上?是否有任何鉴别者可以告诉您name
是否包含accountnumber
或accountname
?
在任何情况下,通过以下假设,你可以尝试一个丑陋的自我加入:
如果是这样,像这样的自我加入应该让你开始:
SELECT t2.name as accountnumber from example_table as t1
INNER JOIN example_table as t2 on t1.recordID=t2.recordID
WHERE t1.name='$accountname'
编辑注意 - 如果我的假设是正确的,如果这是你继承的数据,我觉得你应该改善它的结构。如果你是这样设计的,你可能想先考虑一下。
编辑2
你可能想在name
列上放一个索引(这是我根据你的例子使用的鉴别器)。
您的查询可能是这样的:
SELECT t1.value as accountnumber,t2.value as accountName from example_table as t1
INNER JOIN example_table as t2 on t1.record=t2.record
WHERE t1.name='accountNumber' and t2.name='accountName'
请参阅此SQL小提琴:http://www.sqlfiddle.com/#!2/97c2f/1