帮助PHP选择查询:WHERE x = y AND a = b AND IF(c!= d)可能吗?

weixin_38068363 2019-09-12 01:55:52
好的,这里我们去…我有一个选择查询访问一个非常抽象的数据库.我当前的查询通过5个表(使用6“AND”来执行它…没有乐趣)并返回符合所有条件的任何记录,因为它应该. 我的问题是:我可以在我当前的查询中添加一些内容,基本上说“如果一条记录与所有这些匹配,但不匹配所有这些”. 例: 我目前的查询: $query = "SELECT s.state_name FROM `tbl_records` r, `tbl_states` s, `tbl_events` e, `tbl_fields` f, `tbl_field_values` v WHERE s.state_id = r.state_id AND f.field_id = '$field_id' AND v.field_id = f.field_id AND v.event_id = e.event_id AND e.record_id = r.record_id AND v.value_id = '$field_value' AND v.is_latest = '1'"; 丑陋长,对吧?那么它给了我所有符合一个标准的记录(记录匹配$field_id和$field_value). 现在我需要获取此查询找到的所有记录,但减去满足其他条件的任何记录,例如“AND(v.event_id = e.event_id AND f.field_id =’155’AND v.value_id!=’1′ ); 这是漫长而丑陋的版本.总结一下: 我需要创建一个类似于的查询:    选择“s.state_name FROM a,b,c,d WHERE(a.1 = b.2 AND c.3 = d.4 * etc *)并且仅选择(a.2 = b.3和c.4! = d.5)“ 这可能吗?你能创建一个查询说“如果匹配所有这些并且不匹配所有这些”吗? 如果有人需要更多澄清,请告诉我……这不会让我感到惊讶.谢谢你们. 更新::添加图像以尝试澄清我需要的内容. table structure http://www.everythingsirie.com/values.jpg “需要添加”下的两个值需要属于同一记录.因此,在计划英语中“对于同一记录,如果记录的’field_id’为’155’且field_value为’1′,则在表’tbl_field_values’中,不要包含它.” 但请注意,现在有两个field_id和value_id.这就是让我难过的…… 更新2 :: 我使用@ M42和@Michael的答案更新了查询.但是,无论有没有“AND NOT”,我仍然得到相同数量的回报…… $query = "SELECT s.state_name FROM `tbl_records` r INNER JOIN `tbl_states` s ON s.state_id = r.state_id INNER JOIN `tbl_events` e ON e.record_id = r.record_id INNER JOIN `tbl_field_values` v ON v.event_id = e.event_id INNER JOIN `tbl_fields` f ON v.field_id = f.field_id WHERE f.field_id = '$field_id' AND v.value_id = '$field_value' AND v.is_latest = '1' AND NOT (v.field_id = '155' AND v.value_id = '1')"; 我认为问题是我需要匹配的field_id和value_id与我需要匹配的field_id和value_id在同一个表中.这是一张pic,显示了field_id为155,其value_id为1和0. 我不需要包含value_id为1的记录,仅当field_id为155时…但同时我尝试选择field_id = 12和value_id = 1的记录… table structure http://www.everythingsirie.com/valueid.jpg 我知道这是一团糟…抱歉.
...全文
21 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38079247 2019-09-12
  • 打赏
  • 举报
回复
据了解,您可以添加到您的查询: AND NOT (f.field_id = '155' AND v.value_id != '1')

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧