我有一个小任务要处理,虽然我可以使用该query()
函数手动写出 SQL,但我真的有兴趣了解这一点。
注意:我在 ZF 上很绿色(尤其是作为框架)。我只是将 DB 用作库。
期望的结果:
我希望我的 sql 看起来像这样:
SELECT name, phone, email
FROM company
WHERE name = 'Acme Anvil Corp'
AND ( category1 = 'abc'
OR category3 = 'klm'
OR category8 = 'xyz'
)
到目前为止我已经到达的地方:
$select = $db
->select()
->from('company, array('name', 'phone', 'email'))
->where('name = ?', 'Acme Anvil Corp')
->limit(1);
在那之后,我被搞砸了。
添加一整套orWhere()
's 突起不会产生预期的结果。
如何orWhere()
在集体分组中添加一堆 's ()
?
或者,我想过尝试让我的 SQL 看起来更像:
SELECT c.name, c.phone, c.email
FROM (
SELECT name, phone, email
FROM company
WHERE category1 = 'abc'
OR category3 = 'klm'
OR category8 = 'xyz'
) AS c
WHERE c.name = 'Acme Anvil Corp'
(我不是 SQL 专家,所以如果这两者之间存在显着差异,请不要对反馈感到害羞:)
同样,只是不确定如何解决这个问题。