我可以用SQL做到这一点吗?

Jos*_*osh 0 php mysql sql codeigniter

目前我有两张桌子,products而且options.

产品包含

  1. ID
  2. 标题
  3. 描述

选项包含

  1. ID
  2. PRODUCT_ID
  3. SKU
  4. 标题

样本数据可能是:

Products
id:1
标题:'test'
描述:'我的描述'

Options
id:1
product_id:1
sku:1001
title:'red'

id:2
product_id:1
sku:1002
title:'blue'

我需要显示每个项目,每个不同的选项.此刻,我选择行products并迭代它们,并为每个行选择适当的行options.然后我创建一个数组,类似于:

[product_title] = 'test';  
[description]   = 'my description';  
[options][]     = 1, 1001, 'red';  
[options][]     = 2, 1002, 'blue';
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法只使用sql(我使用codeigniter,并且理想情况下喜欢使用Active Record类)?

Lar*_*tig 5

从...开始

SELECT * FROM products INNER JOIN options ON product.id = options.product_id
Run Code Online (Sandbox Code Playgroud)

并从那里工作.

该示例仅适用于至少有一个选项可用的产品(这是您的设计所要求的,否则您没有SKU的位置).但是,如果某些产品根本没有任何选项,您需要:

SELECT * FROM products LEFT JOIN options ON product.id = options.product_id
Run Code Online (Sandbox Code Playgroud)

最后,列出要返回的实际列而不是SELECT*是一种很好的做法.