我收到了一个SQL查询:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:titleTextAppearance="@style/TitleBarTextAppearance"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
(使用https://github.com/sumocoders/vtiger-api)。它有一个WHERE子句。怎么做对了? (当前查询抛出异常)。我需要获取productname或description包含%name%的所有行,其中cell cf_1007 =“Ready”。
UPD:从vTiger API回答(忘了在这里添加)
$vtiger->query('*', 'Products', "(productname LIKE '%$name%' OR description LIKE '%$name%') AND cf_1007 = 'Ready'", null, 50, null);
答案 0 :(得分:1)
由于第一个(
导致语法错误。
尝试删除它,更改
(A OR B) AND C
代表
A AND C OR B AND C
答案 1 :(得分:0)
我对这个问题进行了深入研究,发现了以下内容: 您正在使用的API会向VTIGER Web服务发送请求。 API中没有任何问题,您的使用似乎没问题。因此,下一站将检查Web服务文档。
然后我遇到了this page,发现了以下内容:
SELECT * | <column_list> | <count(*)> FROM <object> [WHERE
<conditionals>] [ORDER BY <column_list>] [LIMIT [<m>, ] <n>]
请注意该部分的描述:
<condition_operations>
或<in_clauses>
或<like_clauses>
分隔 '和'或'或'运算符从左到右处理。该 不是包含操作符的分组。
因此您似乎无法使用(field1=val1 OR field2=val2) AND field3=val3
格式。您应该使用field1=val1 OR field2=val AND field3=val3
。