我是mysql的新手......我正在研究别人的程序。我有2个表产品和卖家。连接这些表,并在Seller表中建立连接。我想在Products表中显示Product name,并显示已进行产品输入的卖方。
这是我显示产品表的方式:
public function getProductName($product_id,$language_id) {
$query = $this->db->query("SELECT name FROM " . DB_PREFIX . "product_description WHERE
product_id = '".(int)$product_id."'
AND language_id = '".(int)$language_id."'");
if($query->row AND $query->row['name'] != '') {
return $query->row['name'];
} else {
return '-';
}
}
卖方表格包含字段seller_name
,seller_id
,sproduct_id
。如何为每种产品提取相关的卖家名称?
感谢任何帮助!
谢谢, 汤姆
答案 0 :(得分:0)
您希望将两个表一起加入公共product_id
密钥。这是你想要的结果Sql。另外,如果product_id和language_id是数据库中的整数(因为它们似乎是在PHP中),那么您可以放弃'':
"SELECT pd.name, s.seller_name
FROM " . DB_PREFIX . ".product_description pd
INNER JOIN " . DB_PREFIX . ".Seller s on pd.product_id = s.sproduct_id
WHERE
product_id = ".(int)$product_id."
AND language_id = ".(int)$language_id.";";
答案 1 :(得分:0)
使用您的代码:
public function getProductName($product_id, $language_id)
{
$strSQL = "SELECT p.name, s.seller_name FROM " . DB_PREFIX .
"product_description p INNER JOIN " . DB_PREFIX .
"Seller s ON p.product_id = s.sproduct_id WHERE product_id = '" .
intval($product_id) . "' AND language_id = '" .
intval($language_id) . "'";
$query = $this->db->query($strSQL);
if($query->row AND $query->row['name'] != '') {
return $query->row['name'];
} else {
return '-';
}
}
如果product_id和language_id是整数值,则不需要将它们括在''中。还要记住添加错误检查以确保$ product_id和$ language_id具有查询的有效值。有关SQL joins的更多信息。快乐的编码。