2012-10-18 79 views
-1
SELECT  ntc.newsID, ntc.categoryID, category.title 
FROM  news_to_category ntc 
LEFT JOIN news_category category 
ON   ntc.categoryID = category.categoryID 
WHERE  ntc.newsID IN (2,4) 

在此表與IN的MySQL查詢,這個結果可能嗎?

news_to_category 
    categoryID newsID 
    32   2 
    33   2 
    23   4 

news_category 
    categoryID title 
    32   Important 
    33   Cars 
    23   Fishing 

結果應該是:

Array 
(
    [2] => Array 
     (
      [0] => Array 
       (
        [0] => 32 
        [1] => Important 
       ) 
      [1] => Array 
       (
        [0] => 33 
        [1] => Cars 
       ) 
     ) 
    [4] => Array 
     (
      [0] => Array 
       (
        [0] => 23 
        [1] => Fishing 
       ) 
     ) 
) 

第二陣列的關鍵應該是NewSID的。這個結果可能只有一個查詢嗎? 非常感謝!

+0

你可以操縱結果數組用PHP –

+0

是的,我知道,但那將如何工作?我不認爲sql查詢是正確的那樣.. – Chris

+0

發佈預期的結果和你得到的結果。你可以在php中操作安排。 – itachi

回答

0

該查詢是正確的,但會返回一維數組。

0

是這樣的(表名是有點不同):

SELECT  ctn.newsID, ctn.categoryID, cat.title 
    FROM  wcf".WCF_N."_cnews_news_to_category ctn 
    LEFT JOIN wcf".WCF_N."_cnews_category cat 
    ON   ctn.categoryID = cat.categoryID 
    WHERE  newsID IN (".implode(',',$newsIDs).") 

    $result = WCF::getDB()->sendQuery($sql); 
    $news = array();   
    // save info 
    while ($row = WCF::getDB()->fetchArray($result)) { 
     $news[$row['newsID']][] = $row; 
    } 
0

如果你正在使用PHP

<?php 

while($res=mysql_fectch_assoc($resource)) 
{ 
$result[$res['newsID']][]=array($res['categoryID '],$res['title']); 

} 



?> 
0

試試這個

$res = mysql_query("SELECT  ntc.newsID, ntc.categoryID, category.title 
        FROM  news_to_category ntc 
        LEFT JOIN news_category category 
        ON   ntc.categoryID = category.categoryID 
        WHERE  ntc.newsID IN (2,4)"); 

$array = array(); 

while($row = mysql_fetch_array($res)) 
{ 
    if(!isset($array[$row["newsID"]])) 
    $array[$row["newsID"]]=array(); 

    array_push($array[$row["newsID"]], array($row["categoryID"],$row["title"])); 
} 

echo "<pre>"; 
var_dump($array);