当前位置: 首页 > 知识库问答 >
问题:

选择parent_id下的所有产品(表 1)(表 2 = 类别)

斜淳
2023-03-14

我如何从数据库中选择它们来显示类别(表2)中parent_id下的所有产品(表1)?

例如,我想使用像cat.php这样的链接显示/列出parent_id = 1(童装)下的所有产品,包括每页子类别下的所有产品?id=1

父类别ID#1

    < li >产品#1

父类别ID#2

  • 产品#5

父类别ID #3

  • 产品#7

这是我到目前为止看到的,但它仍然没有显示父类别sqlfiddle中的所有产品

SELECT * FROM products
LEFT JOIN categories
ON products.category = categories.category_id
GROUP BY (SELECT parent_id
          FROM categories
          WHERE parent_id = 1  
          GROUP BY parent_id)

DB:类别

CREATE TABLE IF NOT EXISTS `categories` (
`category_id` int(10) NOT NULL AUTO_INCREMENT,
`parent_id` int(10) DEFAULT NULL,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

DB:产品

CREATE TABLE IF NOT EXISTS `products` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`product` varchar(255) DEFAULT NULL,
`description` longtext DEFAULT NULL,
`category` int(10) DEFAULT NULL,
`color` varchar(255) DEFAULT NULL,
`sizes` varchar(255) DEFAULT NULL,
`style` varchar(255) DEFAULT NULL,
`material` varchar(255) DEFAULT NULL,
`stock` varchar(255) DEFAULT NULL,
`ws_price` decimal(6,2) DEFAULT NULL,
`rt_price` decimal(6,2) DEFAULT NULL,
`sp_code` varchar(255) DEFAULT NULL, 
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

类别结构

  • 童装
  • --大男孩

用于查看产品的代码(示例):

$getid = $_GET['id'];
$q = mysqli_query($con,"
SELECT products.*, categories.*
FROM products, categories
WHERE products.category = categories.category_id
GROUP BY categories.parent_id= $getid
");
while($row = mysqli_fetch_array($q, MYSQLI_ASSOC)){
$id = $row['id'];
$product = $row['product'];
$cat = $row['category'];

$c = mysqli_query($con,"SELECT title FROM categories WHERE category_id = $cat"); 
    while($r = mysqli_fetch_array($c)){ 
    $pcat= $r['title']; }

echo '<p>ID#'.$id.'-'.$product.' (Category#'.$cat.'-'.$pcat.')</p>';
}
mysqli_close($con);

共有1个答案

令狐建修
2023-03-14

事实上,据我所知,你的问题是这样的。

你有三张不同的桌子。

第一个。名为i的父类别保留parent_category(id,name),而id是主键。

第二。您有一个子类别表,名为categories。正如您在上面的问题中已经定义的。我在你的桌子上做了一个改动。我将外键添加到parent_ id。

CREATE TABLE IF NOT EXISTS `categories` (
`category_id` int(10) NOT NULL AUTO_INCREMENT,
`parent_id` int(10) DEFAULT NULL,
`title` varchar(255) NOT NULL,
PRIMARY KEY (category_id),
Foreign Key (parent_id) REFERENCES parent_category(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

第三。你有一个产品表。我还添加了一个类别外键。

CREATE TABLE IF NOT EXISTS `products` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`product` varchar(255) DEFAULT NULL,
`description` longtext DEFAULT NULL,
`category` int(10) DEFAULT NULL,
`color` varchar(255) DEFAULT NULL,
`sizes` varchar(255) DEFAULT NULL,
`style` varchar(255) DEFAULT NULL,
`material` varchar(255) DEFAULT NULL,
`stock` varchar(255) DEFAULT NULL,
`ws_price` decimal(6,2) DEFAULT NULL,
`rt_price` decimal(6,2) DEFAULT NULL,
`sp_code` varchar(255) DEFAULT NULL, 
PRIMARY KEY (id),
Foreign Key (category) REFERENCES categories(category_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

现在,您要查看父类别中的产品。

所以下面是代码。

$getid = 1;
$query = mysql_query("SELECT products.*,categories.* from products, categories, parent_category WHERE products.category=categories.category_id AND parent_category.id=categories.parent_id AND parent_category.id=$getid");
while($record = mysql_fetch_array($query)) {
    echo '<p>ID#'.$record['id'].'-'.$record['product'].' (Category#'.$record['category_id'].'-'.$record['parent_id'].')</p>';
}

那就是了。

谢谢

 类似资料:
  • 我有一个问题...在表1中,我有一个id,我必须比较表2中的id,然后获取表2中的第二个id,并将其与表3进行比较,得到一个数据作为结果。例子 如果我查找id 1,结果必须是Sea。如果我查找id 2,结果必须是Hello。 谢谢!

  • 我一直在为使用WooCommerce的客户开发一个电子商务商店,我遇到了一个非常奇怪的问题。我所有的产品都是可变产品,我对它们进行了如下设置:变量1-重量(0,0.5,1.0,1.5,2.0…5.0千克)变量2-单位(0,1,2,3,4,5…10)变量3-切割类型(研磨、切片、整体等)我设置变量的方式使客户必须选择变量1或变量2(重量或单位)和变体3。如果他们选择按重量(重量大于“0”)购买产品,

  • 问题内容: 我有2张桌子。一个是一张桌子,上面有可以学习的东西。有一个JID描述了每种类型的行,并且对于每一行都是唯一的。第二张表是已经学习过的东西的日志(JID)以及学习它的人的用户ID。我目前正在使用它来选择JID的所有数据,但是只能选择用户根据userid学到的那些数据。 现在,我需要选择要学习的东西行,但只选择用户ID尚未学习的东西。我显然对此很陌生,请忍受。:)我尝试使用IS NULL,

  • 我不希望使用任何插件来完成这项任务,因为我最近与一个破坏网站的类似项目发生冲突。因此,我希望从基础创建此功能。 我需要在产品类别页面上的下拉列表,以按品牌选择产品。下拉列表将显示所有品牌。当您选择一个时,网站只显示分配给该品牌的产品。我们不需要使用内置的下拉列表,允许按新鲜度、价格、流行度等查看。 使用WooCommerce”分类法,我建立了自己的品牌,并为每个产品分配了一个品牌。 我可以使用以下

  • 首先对不起我的英语。我的isset有问题这是代码: PHP: 问题是,使用Post值在表1上搜索时可以,但在id为表1的表2上插入和在表2上添加时,id列上的值仅为0 Html: 这是html代码,我在一个氏族表中选择氏族的详细信息,当成员选择氏族名称并插入按钮时,发送的代码中选择了一个氏族名称,如isset值中的test CLANE,并在isset值中选择选项值CLANE name on tab

  • 我有2张桌子 类别 产品 如何选择所有产品并通过子类别加入主类别?产品类别只能有1或2或3或4个级别(未知级别)。 我在类别表中使用“with RECURSIVE”,但找不到将产品表与1次查询相结合的方法 最好的方法是什么? 预期结果 或