Подсчитать все строки на основе идентификатора из другой таблицы - PullRequest
0 голосов
/ 18 января 2019

Я хочу посчитать photo на основе product id. Я думаю, что есть что делать в подсчете циклов. Так что я написал следующее, но я получил

Неустранимая ошибка: вызов функции-члена fetch_assoc () для необъекта

<?
include_once($_SERVER['DOCUMENT_ROOT']."/cgi-bin/connect.php");

$stmt=$mysqli->prepare("select * from products_db order by prd_id");
$stmt->execute();
$result=$stmt->get_result();
$data=array();
while($row=$result->fetch_assoc()){
    //count no. of img in loop
    $stmt=$mysqli->prepare("select pic_id from photo_db where pic_sid=?");
    $stmt->bind_param('s',$row['prd_sid']);
    $result=$stmt->get_result();
    $nPic=$result->num_rows;

    $data[]=array($row['prd_code'],$row['prd_en'],$row['cat_id'],
number_format($row['prd_cost']),$row['prd_stts'],$nPic,$row['prd_rcm']);
}
echo json_encode(array('data' => $data));
?>

Тогда я делаю:

$stmt=$mysqli->prepare("select *,count(pic.pic_id) as npic 
from products_db prd 
inner join 
photo_db pic 
on prd.prd_sid=pic.pic_sid 
order by prd.prd_id");

Это работает НО НЕКОТОРЫЕ ПРОДУКТЫ БЫЛИ НЕИЗВЕСТНЫМИ, ПОТОМУ ЧТО НЕ СООТВЕТСТВУЕТ pic_sid ОТ photo_db

Я хочу, чтобы все продукты отображали количество фотографий, даже если их нет в БД.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Спасибо за совет от @Sayed Mohd Ali. Я придумываю решения.

select *,
(select count(pic_id) as npic from photo_db where pic.pic_sid=prd.prd_sid) as npic
from products_db prd
left join photo_db pic on pic.pic_sid=prd.prd_sid
group by prd.prd_sid
0 голосов
/ 18 января 2019

Попробуйте этот запрос, надеюсь, он будет работать.

select count(pi.pic_id),pr.* from photo_db pi where pi.pic_sid in (select pr.prd_sid from products_db pr ) group by pi.pic_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...