#php
#php
Вопрос:
select test.*,
user.*,
count(test_stats.test_public_id) as past_day_views,
test_stats.test_public_id
from test
join user
join test_stats
where test.user_id=user.user_id
and test.test_public_id=test_stats.test_public_id
and test_stats.updated_on > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
group by test_stats.test_public_id
order by title
select count(test_public_id) as total_views
from test_stats
where test_public_id ='$tourid'
Эти запросы для просмотров на прошлой неделе извлекаются, поскольку я не очень хочу снова запрашивать эти запросы
Пожалуйста, окажите мне и эту услугу
select count(ms.test_public_id) as total_views, ms1.recent_views from test_stats ms
join (select count(test_stats.test_public_id) as recent_views from test_stats
where test_stats.test_public_id = '$tourid' and test_stats.updated_on > DATE_SUB(CURDATE(), INTERVAL 7 DAY)) ms1 where ms.test_public_id ='$tourid'
SELECT * FROM user WHERE activation = '0' AND user_id >1
select * from test where user_id ='$user_id' and test.url is not null
Комментарии:
1. Похоже, проблема скорее в sql, чем в php. Кроме того, было бы очень полезно некоторое описание того, что вы пытаетесь сделать, и некоторое форматирование запроса.
2. Пожалуйста, ознакомьтесь с документацией Zend Framework по адресу framework.zend.com/manual/en/zend.db.select.html
Ответ №1:
Ваш JOINS / WHERE в корне неверен. Я это исправлю. Но в вашей модели создайте функцию, которая делает это:
class MyModel extends Zend_Db_Table_Abstract
{
// ...
public function getSomeData()
{
$cols = array(
'test.*',
'user.*',
'count(test_stats.test_public_id) as past_day_views',
'test_stats.test_public_id'
);
$select = $this->select()
->setIntegrityCheck(false)
->from('test', $cols)
->join('user', 'user.user_id = test.user_id', array())
->join('test_states', 'test_stats.test_public_id = test_stats.test_public_id', array())
->where('test_stats.updated_on > DATE_SUB(CURDATE(), INTERVAL 1 DAY)')
->group('test_stats.test_public_id')
->order('title');
return $this->fetchAll($select);
}
А теперь второй запрос:
$select = $this->select()
->from('test_stats', array('count(test_public_id) AS total_views'))
->where('test_public_id = ?', $tourid);
return $this->fetchAll($select);