我知道这会使用left join
或left outer join
或类似的东西,但这些类型的查询总是让我失望。
我有两张桌子:
类别
ID CatName CatSlug
1 Big Shirts big-shirts
项
ID ItemName Category Price ...
1 Big Red Shirt 1 20.00
所以我试图返回给定类别中的所有项目,由类别slug查询。我还需要返回类别名称。所以现在,我的两个问题是:
$return = array();
$query = "SELECT * FROM categories WHERE CatSlug = :CatSlug LIMIT 1";
$param = array(
'CatSlug' => $slug
);
$result = $this->Db->selectOne($query, $param);
if ($result) { // If result exists
$return['Category'] = $result['CatName']; // Need to return cat name
$query = "SELECT * FROM items WHERE Category = :Category";
$param = array(
'Category' => $result['ID']
);
$result = $this->Db->selectAll($query, $param);
if ($result) { // If result exists
$return['Items'] = $result;
} else { // If result does not exist
$return['Items'] = array();
} // End if result does not exist
}
return $return;
所以,我返回一个带有两个键的数组:Category
包含CatName
表中的categories
值,Items
包含一个包含所有项目的数组类别,如果没有,则为空白数组。
如何组合这两个查询?
答案 0 :(得分:0)
id
SELET * FROM page_categories p LEFT JOIN items i ON p.category = i.id WHERE c.CatSlug = :CatSlug