[英]How can i select records from two tables in cake php(cake 2)
我是蛋糕php的新手。 我有两张桌子
结构是
ce_stat
id keyword click
1 keyword1 24
2 keyword2 2
3 keyword3 6
ce_landing
id page_keyword
1 keyword1,check,keyword3
2 keyword2,usa,alphanumeric
我想获取ce_landing.page_keyword
中存在的所有记录ce_stat.keyword
。 我在蛋糕php模型中使用它
public $hasMany = array(
'Stat' => array(
'className' => 'Stat',
'foreignKey' => 'keywor',
'dependent' => false,
'conditions' => array('Stat.keyword LIKE' => '%Landing.page_keywords%'),
'group' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
但这是生成的sql查询,例如
SQL查询:SELECT
Stat
。id
,Stat
。customer_id
,Stat
。account
,Stat
。campaign_id
,Stat
。campaign
,Stat
。keyword
Stat
。ad_grp_id
,Stat
。ad_grp
,Stat
。impressions
,Stat
。clicks
Stat
。cost
,Stat
。qualityScore
,Stat
。keywordState
,Stat
。date_from
,Stat
。date_to
,Stat
。user_id
,Stat
。created
,Stat
。modified
,Stat
。keywor
FROMEB_adwords
。ce_stats
ASStat
WHEREStat
。keyword
LIKE'%Landing.page_keywords%'ANDStat
。keyword
=('559f479a-82ac-4e3d-8c24-19b5c0a8011f')
因此由于AND Stat
而返回空数据。 keyword
=('559f479a-82ac-4e3d-8c24-19b5c0a8011f')条件。
更新
我想从ce_landing
获取所有记录,并根据出现的关键字获得总点击次数。 即用于ce_landing
记录1。 我会得到结果
id page_keyword clicks
1 keyword1,check,keyword3 30
2 keyword2,usa,alphanumeric 2
您需要一条等效于以下内容的SQL语句:
SELECT ce_landing.id, ce_landing.page_keyword, SUM(ce_stat.click) AS total_clicks
FROM ce_landing
LEFT JOIN ce_stat
ON FIND_IN_SET(keyword,page_keyword)>0
GROUP BY ce_landing.id, ce_landing.page_keyword;
这不容易转换为Cakephp的find
方法。 只需使用查询方法即可实现。
$this->Landing->query("SELECT Landing.id, Landing.page_keyword, SUM(ce_stat.click) AS total_clicks
FROM ce_landing AS Landing
LEFT JOIN ce_stat
ON FIND_IN_SET(keyword,page_keyword)>0
GROUP BY Landing.id, Landing.page_keyword;");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.