繁体   English   中英

我如何从Cake php(cake 2)的两个表中选择记录

[英]How can i select records from two tables in cake php(cake 2)

我是蛋糕php的新手。 我有两张桌子

  1. ce_landing
  2. ce_stat

结构是

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 idStat customer_idStat accountStat campaign_idStat campaignStat keyword Stat ad_grp_idStat ad_grpStat impressionsStat clicks Stat costStat qualityScoreStat keywordStateStat date_fromStat date_toStat user_idStat createdStat modifiedStat keywor FROM EB_adwords ce_stats AS Stat WHERE Stat keyword LIKE'%Landing.page_keywords%'AND Stat 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM