2014-03-05 71 views
2

我的確看過這篇文章(Get all posts from a specific category),但它似乎並不適用於我的情況。選擇某一類別的所有帖子

我的情況是,我有兩個表如下:

1 /表類別

category_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, 
lang_id TINYINT UNSIGNED NOT NULL, 
name VARCHAR(60) NOT NULL, 
PRIMARY KEY (category_id), 
UNIQUE (name) 
     ) ENGINE = INNODB'; 

其中LANG_ID的值是1(相當於英國)和2(相當於越南),這是用於使用$ _SESSION ['lid']進行過濾。

category_id  lang_id   name 
    1     1   Arts and Entertainment 
    2     1   Computers 
    3     2   Nghệ thuật và Giải trí 
    4     2   Máy tính 

2 /表帖子:

'CREATE TABLE posts (
    post_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    category_id TINYINT UNSIGNED NOT NULL,  
    lang_id TINYINT(3) UNSIGNED NOT NULL, 
    user_id INT UNSIGNED NOT NULL, 
    subject VARCHAR(150) NOT NULL, 
    PRIMARY KEY (post_id), 
    INDEX (category_id), 
    INDEX (lang_id), 
    INDEX (user_id) 
    ) ENGINE = MYISAM'; 

在其中CATEGORY_ID是所述第一表的外鍵。

question_id  category_id  lang_id  user_id  subject 
    1    1    1    1  arts 
    2    4    2    1  máy tính 
    3    5    1    1  business and money 

我想在鼠標點擊它時選擇某個類別的文章。所以,我運行這個查詢:

$q = "SELECT subject 
FROM categories AS ca 
INNER JOIN questions AS q 
USING (category_id) 
WHERE q.lang_id = {$_SESSION['lid']} 
GROUP BY ca.category_id 

$r = mysqli_query($database_connect, $q) 
if(mysqli_num_rows($r) > 0) { 
    while ($subject = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
     echo '<ul> 
     <li>'. $subject['subject']. '</li> 
     </ul>'; 
} 

但結果不會按要求返回。例如,當我點擊類別1(藝術和娛樂)時,結果返回兩個主題(category_id 1中發佈的藝術,category_id 5中發佈的business和money)。

您能幫我重新構建查詢嗎?我真的被困在這裏。

+0

的職位類別ID刪除GROUP BY子句ca.category_id – souvickcse

+0

你不檢查所選類別的ID在所有 –

+0

如果您正在使用帖子表您必須加入類別和帖子,但我可以看到您正在加入類別和問題。 –

回答

0
SELECT categories.*, posts.* from posts left join posts on categories.category_id=posts.category_id where posts.lang_id = {$_SESSION['lid']} and posts.category_id={your given category} 
+0

榮譽,我刪除了GROUP BY子句,並根據souvickcse的指南將AND添加到WHERE子句中。這對我現在很好。 –

+0

如果你喜歡這個答案,請upvote並接受它作爲答案。 – souvickcse

+0

我嘗試過,但它需要15點聲望。我今天剛加入論壇,所以我做不到。我該如何接受它作爲答案?因爲這是我第一次使用這個論壇.... –

2

添加在WHERE子句來選擇特定類別

SELECT subject 
FROM categories AS ca 
INNER JOIN questions AS q 
USING (category_id) 
WHERE q.lang_id = {$_SESSION['lid']} 
AND ca.category_id = 1 
相關問題