Php、MySql连接表、限制每个类别的记录
我有两张桌子: 项目 品牌Php、MySql连接表、限制每个类别的记录,php,mysql,Php,Mysql,我有两张桌子: 项目 品牌 Model_ID Title --------------------- 1 Audi 2 BMW 3 Acura 以及以下查询: SELECT b.name, i.title, FROM items AS i INNER JOIN brands AS b ON b.Model_ID = i.Model_ID
Model_ID Title
---------------------
1 Audi
2 BMW
3 Acura
以及以下查询:
SELECT
b.name,
i.title,
FROM
items AS i
INNER JOIN brands AS b
ON b.Model_ID = i.Model_ID
WHERE i.status = 1
ORDER BY i.created DESC;
上述操作将生成工作阵列:
Array
(
[0] => stdClass Object
(
[name] => 2010 Audi L1
[title] => Audi
)
[1] => stdClass Object
(
[name] => 2014 MBW X5
[title] => BMW
)
...
)
然后我使用自定义函数在数组中循环,并以
Array
(
[Acura] => Array
(
[0] => stdClass Object
(
[name] => 2015 Acura L1
[title] => Acura
)
...
)
[BWM] => Array
(
[0] => stdClass Object
(
[name] => 2016 BMW X5
[title] => BWM
)
...
)
[Audi] => Array
(
[0] => stdClass Object
(
[name] => 2010 Audi L1
[title] => Audi
)
...
)
)
现在我可以使用foreach循环并限制每个品牌显示x个项目,但我的想法是在数据库中执行,因此,我希望每个品牌最多显示5个项目,而不是拉取所有记录
注意:我没有列出表的其余字段,例如created,它用于对记录进行排序
获取品牌:
$q='根据标题ASC从品牌订单中选择型号_ID作为ID';
$r=mysql\u查询$q;
$model_id=数组;
而$brand=mysql_fetch_assoc$r{$model_ids[]=$brand['id'];}
然后使用从第一步或其他地方收集的模型_ID-s,例如:从搜索表单,生成如下选择查询:
因此,我们将获得结果查询的记录:
SELECT
b.name,
i.title,
FROM
items AS i
INNER JOIN brands AS b
ON b.Model_ID = i.Model_ID
WHERE i.status = 1
ORDER BY i.created DESC;
挑选
b、 名字,
i、 标题来自
如我所述的项目
内部加入品牌为b
在b.Model_ID=i.Model_ID,其中b.Model_ID=1,i.status=1,由i.created DESC LIMIT 5订购
联合所有
挑选
b、 名字,
i、 标题来自
如我所述的项目
内部加入品牌为b
在b.Model_ID=i.Model_ID,其中b.Model_ID=2,i.status=1,由i.created DESC LIMIT 5订购
联合所有
挑选
b、 名字,
i、 标题来自
如我所述的项目
内部加入品牌为b
在b.Model_ID=i.Model_ID,其中b.Model_ID=3,i.status=1,由i.created DESC LIMIT 5订购
是我错了,还是该查询完全混淆了,因此它实际上与表列不匹配?@riggsfully query是正确的,根据我的说明,我没有包括其余字段,只有所需的字段。我没有标题b有标题。b没有名字,我有名字??可能是重复的
$q = array();
foreach($mode_ids AS $model_id) {
$q[] = '(SELECT b.name, i.title FROM items AS i INNER JOIN brands AS b ON b.Model_ID = i.Model_ID WHERE b.Model_ID = '.(int)$model_id.' AND i.status = 1 ORDER BY i.created DESC LIMIT 5)';
}
if(!empty($q)) {
$q = implode(' UNION ALL ', $q);
$r = mysql_query($q);
while($record = mysql_fetch_object($r)) {
var_dump($record);
}
}