Heim >Backend-Entwicklung >PHP-Tutorial >thinkphp中mysql 如何嵌套查询不同的条件?

thinkphp中mysql 如何嵌套查询不同的条件?

WBOY
WBOYOriginal
2016-06-06 20:20:061656Durchsuche

1比如,我要价格在20-30 50-60 70-80 价格区间的商品,关系为or
2同时标题要包含裙子,上衣,外套关系为or,
3还要排除标题包含童装,书籍,关系为and,
3个结果合并以id排序,然后取出数据.

大概类似下面的mysql 语句
(价格区间1 or 价格区间2 or 价格区间3) and (标题1 or 标题2 or 标题3) and (标题 not in(....)) order by id

然后再thinkphp 中如何用他的链式操作表示出来,尤其是里面复杂的嵌套查询条件?或者一般会采用什么样的办法?

回复内容:

1比如,我要价格在20-30 50-60 70-80 价格区间的商品,关系为or
2同时标题要包含裙子,上衣,外套关系为or,
3还要排除标题包含童装,书籍,关系为and,
3个结果合并以id排序,然后取出数据.

大概类似下面的mysql 语句
(价格区间1 or 价格区间2 or 价格区间3) and (标题1 or 标题2 or 标题3) and (标题 not in(....)) order by id

然后再thinkphp 中如何用他的链式操作表示出来,尤其是里面复杂的嵌套查询条件?或者一般会采用什么样的办法?

thinkphp的where()很好用的,可传数组的形式条件,对象形式,也可以多个参数一起,还可以接受原生sql where部分语句。也就是where('(价格区间1 or 价格区间2 or 价格区间3) and (标题1 or 标题2 or 标题3) and (标题 not in(....))') 这样是可以的,如果这样都满足不了你,你完成可以用$this->query()[M('XXX')->query()]来执行一条原生的sql

你需要的是 thinkphp 里面的 组合查询

_string _logic _complex 这几种用法可以满足了。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn