2017-04-09 238 views
0

我正在写一个MySQL搜索代码使用两个表。但结果似乎不正确PHP的MySQL搜索查询

接口 Interface

“翻译” 表结构(这保存有关口译信息)enter image description here

“terp_attributes” 表结构(这个拥有属性价值id可用于terps)

EX- terp x has level 1 and level 2 certification 
Ex2- terp x can translate ASL and Spanish 

enter image description here

上面表中的示例数据

enter image description here

我写了一个SQL得到“男性或女性,其已经通过认证的(ta_attrvalid = 1)或1级技能(ta_attrvalid = 2 )“,他也有”ASL“语言(ta_attrvalid = 6)属性,但它似乎不工作,即使我修改了很多。这里是我的查询

SELECT * FROM 
interpreters ,terp_attributes 
WHERE (terp_gender='M' OR terp_gender='F') 
AND terp_agencyid=1 AND terp_id=ta_terpid 
AND (ta_attrvalid=1 OR ta_attrvalid=2) 
AND (ta_attrvalid=6) 

应返回“ta_terpid 3”的数据作为预测,但我看不到任何结果

谁能帮助我解决这个问题,还请 非常感谢

+1

我相信你需要在你的WHERE子句中指定表名。 SELECT * FROM 口译,terp_attributes WHERE(interpreters.terp_gender = 'M' OR interpreters.terp_gender = 'F') AND interpreters.terp_agencyid = 1 AND terp_attributes.terp_id = ta_terpid AND(terp_attributes.ta_attrvalid = 1个OR terp_attributes.ta_attrvalid =(0) AND(terp_attributes.ta_attrvalid = 6) – cosmoonot

+2

AND(ta_attrvalid = 1 OR ta_attrvalid = 2)AND(ta_attrvalid = 6)' - 这是不可能的。 –

+0

@PaulSpiegel是否有其他方式可以做到这一点,或者我应该将这些属性关系保存在3个独立的表中,谢谢 –

回答

1

attributes表分为interpreters_skillsinterpreters_languagesinterpreters_locations可能会更好。然而,你的实际设计需要多次加入表格或者使用EXISTS子查询:

+0

非常感谢,我会检查这 –

+0

它工作的很好,非常感谢您的帮助:)祝您好运...! –