評論這是我國上午3點30,所以我需要睡覺,但我不能沒有這樣的:MySQL查詢 - 選擇的所有帖子和計數爲每一個
我試圖讓所有帖子(使用Zend_Db
)併爲每個人評論。
模式
blog_posts
:
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| content | text | NO | | NULL | |
| alias | varchar(100) | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
| created_date | datetime | NO | | NULL | |
| modified_date | datetime | YES | | NULL | |
| thumbnail | varchar(255) | YES | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
而這裏的blog_comments
:
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | NULL | |
| post_id | int(11) | NO | | NULL | |
| comment | text | NO | | NULL | |
| created_date | datetime | NO | | NULL | |
| modified_date | datetime | YES | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
注:blog_comments.post_id
與blog_posts.id
聯繫。
我想一個生成的表像:
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| content | text | NO | | NULL | |
| alias | varchar(100) | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
| created_date | datetime | NO | | NULL | |
| modified_date | datetime | YES | | NULL | |
| thumbnail | varchar(255) | YES | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
| TEMPOROARY COLUMN IN OBJECT ($post->comment) |
+---------------+------------------+------+-----+---------+----------------+
| comments | | | | | |
+---------------+------------------+------+-----+---------+----------------+
現在,這裏的查詢我現在:
SELECT `p`.*, `c`.*
FROM `blog_posts` `p`
LEFT JOIN (
SELECT COUNT(*)
FROM `blog_comments` `c`
WHERE c.post_id = p.id
) ON `p`.`comments`;
但它給我錯誤:
Error Code: 1248. Every derived table must have its own alias
所以,如果有人可以幫助我,它將非常感激!
重要提示 我使用Zend_Db
和Zend_Db_Select
所以我必須能夠使用的功能,如joinLeft()
或任何東西,我需要。
這是在我的模型爲select()
:
$select = $this->table->select();
if ($alias) {
$select->where('alias = ?', $alias);
return $this->table->fetchRow($select);
}
if ($withComments) {
// I WILL PLACE THE CODE HERE, EXEMPLE:
$select->joinLeft(...);
}
爲了擺脫錯誤的消息,你將不得不寫JOIN(SELECT ...)_AS counts_ ON ......然而,你的查詢似乎還存在其他問題(例如,你應該將返回一個鍵和來自子查詢的計數,並且on子句缺少一個條件。) –
@TerjeD。你能解釋一下嗎?我知道MySQL for基本查詢但是當我需要做更難的事情時,我指的是因爲'JOIN'等等不是我的力量! –
顯示一個結果表的例子應該看起來像。 –