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次查询就可以得到这个结果吗? 非常感谢!
答案 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);