[英]What joins in SQL do I need to get the Category name based on the ID from a different table?
我正在嘗試計算SQL中需要的內部聯接或聯接的類型,以便根據不同表中產品的ID獲取類別名稱。
我正在使用自己的MVC框架制作PHP產品頁面腳本,現在我可以輕松獲取產品的所有數據,但是我需要獲取基於cat_id的類別名稱。 我不確定如何進行這種查詢,因為我以前從未真正使用過它們。
我有兩個表,項目表中有很多數據,這個問題中重要的一個是'cat_id':
id name ###cat_id###
-----------------------------
1 item name 2
2 item name 1
3 item name 3
第二個數據庫是類別表,如下所示:
###id### name status
-----------------------------
1 catty 1
2 cat 0
3 cat 1
所以我想發生的事情是說項目1的cat_id = 1,它在視圖位上與Catty相呼應,但是我不知道該怎么做。
這是視圖中的PHP代碼:
<?php if($data['isProducts']) { foreach($data['products'] as $product) : ?>
<div class="col-lg-4 col-md-4 col-sm-6 mb-3">
<div class="card h-100 shadow-1 rounded-0">
<a href="<?php echo FULL_ROOT;?>/item/<?php echo $product['id']; ?>/">
<img class="card-img-top rounded-0" src="<?php echo FULL_ROOT;?>/uploads/items/<?php echo $product['id']; ?>/<?php echo $product['preview_img']; ?>" alt="<?php echo $product['name']; ?>">
</a>
<div class="card-body text-center">
<a href="<?php echo FULL_ROOT;?>/item/<?php echo $product['id']; ?>/"><h2 class="card-title font-weight-bold f-18"><?php echo $product['name']; ?></h2></a>
<div class="clearfix">
<a data-toggle="tooltip" data-placement="top" title="Add to Wishlist" href="#" class="btn btn-sm btn-light btn-lightb float-left mr-1"><i class="far fa-heart"></i></a>
<a data-toggle="tooltip" data-placement="top" title="Live Preview" href="<?php echo $product['demo']; ?>" target="_blank" class="btn btn-sm btn-light btn-lightb float-left"><i class="fas fa-desktop"></i></a>
</div>
</div>
<div class="card-footer bg-white">
<div class="clearfix">
<button type="button" class="btn btn-sm btn-light float-left btn-lightb">
<!-- get name from cat table based on id --> <?php echo $product['cat_id']; ?>
</button>
<button type="button" class="btn btn-sm btn-light float-right btn-lightb">
<?php echo $data['settings']['payment_currency_sym'].$product['price']; ?>
</button>
</div>
</div>
</div>
</div>
<?php endforeach; } else { ?>
<div class="col-12">
<div class="alert alert-primary shadow-1 rounded-0" role="alert">
<b><i class="fas fa-info-circle"></i> No Items Available!</b>
</div>
</div>
<?php } ?>
這是我的控制器代碼:
public function profile($user_id = '')
{
// Get data from model
$sdata = $this->setting->getAll();
// Check if empty
if($user_id == '') { redirect(''); }
// Get data from model
$udata = $this->user->getUserByUsername($user_id);
$pdata = $this->user->getUserProducts($udata['id']); //Get the cat name based on id from this bit
if(is_array($pdata[0]) ) {
$isProducts = true;
} else {
$isProducts = false;
}
$data = array(
"user" => $udata,
"products" => $pdata,
"isProducts" => $isProducts,
"settings" => $sdata
);
// Checks if no data found (404)
if($udata == false) { redirect('error'); }
// Load view
$this->view('marketplace/user/profile', $data);
}
這是我的模型代碼:
public function getUserProducts($user_id)
{
// $bind = [':username' => $user_id];
$sql = "select ??????????? from msi_items INNER JOIN/OUTER JOIN ?????";
$results = $this->run($sql);
//$results = $this->db->select('msi_items','status = 1 AND author_id = :username', $bind);
if(!is_array($results[0])) {
$new_results = array();
array_push($new_results, $results);
return $new_results;
} else {
return $results;
}
}
您可以嘗試類似:
select i.cat_id, c.name
from items i inner join category c on i.cat_id = c.id
或者,即使沒有類別也要擁有所有項目,則如下所示。 在這種情況下,您將在沒有c.name的地方得到null
select i.cat_id, c.name
from items i left join category c on i.cat_id = c.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.