使用IN的MySQL-Query,这个结果可能吗?

时间:2012-10-18 05:12:58

标签: php mysql sql join

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)

在这张桌子上

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。仅1次查询就可以得到这个结果吗? 非常感谢!

4 个答案:

答案 0 :(得分:0)

查询正确但会返回一维数组。

答案 1 :(得分: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;
    }

答案 2 :(得分:0)

如果您使用的是php

<?php

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

}



?>

答案 3 :(得分: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);