-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)

このテーブルで

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
                )
        )
)

2番目の配列のキーはnewsIDである必要があります。この結果はたった1つのクエリで可能ですか?どうもありがとう!

4

4 に答える 4

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);
于 2012-10-18T06:06:30.167 に答える
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;
    }
于 2012-10-18T05:40:41.310 に答える
0

クエリは正しいですが、1 次元の配列が返されます。

于 2012-10-18T05:36:13.043 に答える
0

phpを使用している場合

<?php

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

}



?>
于 2012-10-18T05:44:15.430 に答える