Ben sadece SQL ile bunu yapabilir mi?

2 Cevap php

Şu anda iki tablo, products ve options var.

Ürünleri içeriyor

  1. kimlik
  2. başlık
  3. tanım

Seçenekleri içeriyor

  1. kimlik
  2. product_kimlik
  3. sku
  4. başlık

Örnek veri olabilir:

Products
kimlik: 1
başlık: 'test'
tanım: 'my tanım'

Options
kimlik: 1
product_kimlik: 1
sku: 1001
başlık: 'red'

kimlik: 2
product_kimlik: 1
sku: 1002
başlık: 'blue'

Ben her farklı seçeneği ile, her öğeyi görüntülemek gerekir. Şu anda, ben products satırları seçin ve bunların arasında dolaşmak ve her biri için options dan uygun satırları seçin. : Ben bundan sonra benzer bir dizi oluşturmak

[product_başlık] = 'test';  
[tanım]   = 'my tanım';  
[options][]     = 1, 1001, 'red';  
[options][]     = 2, 1002, 'blue';

Sadece sql ile bunu yapmak için daha iyi bir yolu (Ben CodeIgniter kullanıyorum, ve kimlikeal Active Record sınıfını kullanmak istiyorum) var mı?

2 Cevap

Ile başlayın

SELECT * FROM products INNER JOIN options ON product.id = options.product_id

ve oradan çalışır.

Örnek yalnızca (aksi takdirde SKU için yer yoktur, tasarım tarafından gereklidir), en az bir seçeneği olan ürünler için çalışıyor. Bazı ürünler hiç bir seçenek yok ama eğer istediğiniz:

SELECT * FROM products LEFT JOIN options ON product.id = options.product_id

Son olarak, * Eğer SELECT yerine geri almak istiyorum fiili sütunları listelemek için iyi bir uygulama olarak kabul edilir.

Eğer ürün ve seçenekleri katılmak gerekir. Bu sorguyu deneyin:

select *
from products, options
where products.id = options.product_id