有and 有OR的依据几个字段生成SQL语句
有and 有OR的根据几个字段生成SQL语句
有如下图的数据表信息,有什么好的方法把它们组合成一条SQL?如果全是and 的或者全是or的,这方法好办,可是两个同时都有的,怎么办呢?
全是AND 或OR的话
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $sql = "select * from sk_cvfilter where cvid=58 and columnname!=''"; $query = mysql_query($sql); $sql = ''; while($row = mysql_fetch_assoc($query)){ if($row['comparator']=='eq'){$comparator="=";} else{$comparator=$row['comparator'];} $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; }
------解决方案--------------------
- SQL code
select * from sk_cvfilter where cvid=58 and columnname!='' and andor='and' or andor='or' <br><font color="#e78608">------解决方案--------------------</font><br>你的这个记录有问题,为什么呢?<br><br>例如出现一个 (a = 1 or (b=2 and b=3)),这个时候,你是怎么记录的?<br><br>我猜是这样的<br><br>columnname comparator value andor<br>a eq 1 or<br>b eq 2 and<br>c eq 3 <br><br>这个时候问题出现了,假如你不知道上面的那个关系式(a = 1 or (b=2 and b=3)),<br>如果只从结构看的话,你是认为<br><br>(a = 1 or b =2 ) and b = 3<br><br>还是<br><br> a = 1 or (b=2 and b=3)<br><br>上述问题不考虑,所有or为一个条件和其他条件and的写法<br><br><br>
- PHP code
<?php $sql = "select * from sk_cvfilter where cvid=58 and columnname!=''"; $query = mysql_query($sql); $sql = ''; // 记录上一句的是不是or $is_last_or = false; while($row = mysql_fetch_assoc($query)){ if($row['comparator']=='eq'){$comparator="=";} else{$comparator=$row['comparator'];} if($is_last_or) { if($row['andor'] == 'and') { // 和下一句是and关系说明括号要结束了 $sql .=$row['columnname'].$comparator."'".$row['value']."' ) ".$row['andor'].' '; } else { // 持续括号里的内容 $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; } } elseif($row['andor'] == 'or') { // 如果有or则意味着和下一句有或的关系(因为你这里没有括号) $is_last_or = true; // 加上括号吧 $sql .= '( ' . $row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; } else { $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; } } <br /><font color="#e78608">------解决方案--------------------</font><br>
- PHP code
<?php $sql = "select * from sk_cvfilter where cvid=58 and columnname!=''"; $query = mysql_query($sql); $sql = ''; // 记录上一句的是不是or $is_last_or = false; while($row = mysql_fetch_assoc($query)){ if($row['comparator']=='eq'){$comparator="=";} else{$comparator=$row['comparator'];} if($is_last_or) { if($row['andor'] != 'or') { // 和下一句是and或者结束了关系说明括号要结束了 $sql .=$row['columnname'].$comparator."'".$row['value']."' ) ".$row['andor'].' '; } else { // 持续括号里的内容 $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; } } elseif($row['andor'] == 'or') { // 如果有or则意味着和下一句有或的关系(因为你这里没有括号) $is_last_or = true; // 加上括号吧 $sql .= '( ' . $row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; } else { $sql .=$row['columnname'].$comparator."'".$row['value']."' ".$row['andor'].' '; } } <div class="clear">

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

一、排序與去重日常工作中,總是會有一些場景需要對結果集做一些過濾。例如,與第三方互動後所取得的結果集,需要再次排序去重,此時就會根據某個欄位來去重,又或者某個欄位來排序。在Java中,去重的話,我們很容易就想到了Set的特性(無序無重),並且TreeSet(有序無重)還可以指定去重的規則(去重後一般是升序的結果集) 。排序的話,我們很容易想到各種排序演算法,但Java中已經提供了排序的功能,如集合中sort()方法,並且還可以指定排序的欄位和升降序。在此多說一句,Set的特性(無序無重):無序:無序性

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

1.說明Java提供比較的介面Comparable,用於比較,實作該介面的所有類,都動態地實作了該比較方法。事實上,Java不僅提供了一個比較接口,還提供了另一個接口。 Comparator介面也具有比較功能,但此介面重視的是比較容器。 2.實例Comparator在Java8之前被廣泛使用。 Java8不僅升級為函數接口,還擴展了預設方法。 Comparatorcomparator=(p1,p2)->p1.firstName.compareTo(p2.firstName);Personp1=ne

Comparable和ComparatorComparable和Comparator是Java的兩個和排序相關的接口,又被稱為自然排序和自訂排序。最近看了相關的內容,現在來記錄以下自己的學習狀況。 Comparable和Comparator是關於排序的兩個接口,用來實作Java集合中的的排序功能。具體作用可以查看API取得。 Comparable這是API文件中的簡介:Thisinterfaceimposesatotalorderingontheobjectsofeachclassthatimp

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

图片消失如何解决先是图片文件上传$file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'

图片消失如何解决先是图片文件上传$file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'
