目前我有两张表products
和options
。
产品包含
选项包含
示例数据可能是:
Products
id:1
标题:'测试'
描述:'我的描述'
Options
id:1
product_id:1
sku:1001
标题:'红色'
id:2
product_id:1
sku:1002
标题:'蓝色'
我需要显示每个项目,每个项目都有不同的选项。目前,我选择products
中的行并迭代它们,并为每个行选择options
中的相应行。然后我创建一个数组,类似于:
[product_title] = 'test';
[description] = 'my description';
[options][] = 1, 1001, 'red';
[options][] = 2, 1002, 'blue';
有没有更好的方法只使用sql(我使用codeigniter,并且理想情况下喜欢使用Active Record类)?
答案 0 :(得分:5)
从
开始SELECT * FROM products INNER JOIN options ON product.id = options.product_id
从那里开始工作。
该示例仅适用于至少有一个选项可用的产品(您的设计需要此选项,否则您无法使用SKU)。但是,如果某些产品根本没有任何选项,您需要:
SELECT * FROM products LEFT JOIN options ON product.id = options.product_id
最后,列出您想要返回的实际列而不是SELECT *是一种很好的做法。
答案 1 :(得分:1)
您需要加入产品和选项。试试这个问题:
select *
from products, options
where products.id = options.product_id
答案 2 :(得分:1)
从产品a中选择*,选项b,其中a.id = b.product_id;
或
你可以使用
从product中选择*,其中product_id =(从产品中选择ID)