Sayfayı E-ticaret, ürün ve stok nasıl bu

1 Cevap php

Ben bir müşteri için bir AB sistemi inşa ediyorum, bu istemci ikinci el ürünler satmaktadır. Benim DB şeması kabaca bu gibi

+-------------+ +-------------+ +-------------+
| Category    | | Product     | | Stock       |
+-------------+ +-------------+ +-------------+
| category_id | | category_id | | stock_id    |
| path        | | product_id  | | product_id  |
+-------------+ +-------------+ +-------------+

Bir ürün kategorisi içinde, bir hisse senedi bir ürünün bir madde olduğunu, stok da bunun için özel bilgileri içerir: stok seri, devlet (iyi durumda, biraz kırık, önemsiz).

Şimdi ben böyle exemple şey için her kategoride stokta ürün göstermek için bir sayfa yapmak gerekir:

TV (big category)
   LCD (small category)
     SONY super LCD 22'' <- product 
    Stock 1 
    Stock 2
    Stock 3
     Sony super LCD 24''
     .... etc ...
   PLASMA (category)
     Hitachi bla bla plasma
       Stock 1 
       Stock 2
       Stock 3

Kullanıcı kategorisinde birinci düzeyini göz atabilirsiniz beri çağrı sistemi veya sayfanın çeşit çok uzun olsun istiyorum eklemek gerekir ve sunucu hiçbir şey için yüklenmiş olacaktır.

Benim ilk planı bu ürün stok var ve bu sorgunun bir sınırı yapacağını, kategori ve çocukların kategorideki tüm ürünler çekin oldu. Ben bu ürünü aldığımda gerçek stok satırları almak için sorgu n sayıda yapardı.

Iyi bir SQL sorgusu daha sonra uzun bir açıklama olduğu

SELECT * FROM category c JOIN product p ON c.category_id = p.category_id 
WHERE c.deleted = 0
AND p.deleted = 0
AND (c.category_id = 37 or c.path LIKE '/1/37/%')
AND (SELECT count(*) FROM stock s WHERE s.product_id = p.product_id AND s.sell= 1) != 0 
LIMIT 10

Bu gibi 10 sorguları yapardı sonra

SELECT * FROM stock s WHERE s.sell = 1 AND s.product_id = pulledid

işte benim soru geliyor, bunu yapmak için daha iyi bir yolu var mı? Bu yaklaşım bazı akımlar (ben gerçekten naif bir yaklaşım olduğunu biliyorum ama ben başka bir şey gelemez hoşgörülü olmayın) Can

Bu hisse senetleri ile ilgili sınırlamak için daha akıllı olurdu? sayfa aynı fiyata sahip bazı gruba bazı dinamik html (belki ajax) sahip olacağını bilerek.

Is it better to show: - one product and all stocks (in most case it won't be more then 5 items) - page by stock which means the Product A could be on page 1 and page 2.

Birisi deneyim binaya sisteminin bu tür var ve bana geri verebilir eğer ben minnettar olacaktır.

1 Cevap

  1. Neden ürün kimlikleri alıyorsanız ve sonra hisse senedi tablosunu sorgulamak için onları ayrı ayrı kullanıyor? Sadece stok tablo katılmak olabilir gibi görünüyor.
  2. Birden fazla öğe belirli bir ürün kimliği için stokta varsa fazla 10 satır alacak tasarım kullanma.
  3. Eğer aşağıdaki sayfada için sonraki 10 almak için gidiyoruz nasıl açık değildir. Siz önümüzdeki 10 başlayan seçmek için bir yol gerekir.

Ben böyle bir sorunu yapısı olurdu normal şekilde bu tüm sonuçları listeleyen bir sorgu oluşturmak olacaktır. Eğer ilk sorgusuna stok tablosunu katılarak bu yapamadı. , Size çıktı istediğiniz sipariş karşılık çıkışta bir sütun veya sütun kümesi hazırlamak çağrı iş yapmak için o fıkra ile sipariş ekleyin. Bu set, benzersiz olmalıdır. Senin durumunda bu ürün kimliği, stok kimliği ve bir autoincremented sütun veya bir zaman damgası gibi benzersiz bir tanımlayıcı stok gibi bir şey olabilir. Daha sonra sayfa boyutuna ilk sayfa sorgusu sınırlayabilir. Sonraki sayfa için, benzersiz değerler son sayfadaki son birden büyük olan sadece bu kayıtları seçin. Eğer bu şekilde sorgulamak mümkün olmayabilir bu yüzden durumunda, birden çok sütun kullanarak olacaktır. Bir alternatif sayfanın 2 için 2 değer sayfaları seçin ama ilk sayfayı atmak ve ikinci sayfayı görüntülemek olacaktır.

Fikir her sayfa için aynı sırayla kayıtların aynı genel grubunu seçerek, ancak farklı bir alt görüntüleniyor olmasıdır.