Değişken Tablo Sütunları

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Değişken Tablo Sütunları

Mesaj gönderen nodetail » 01 Eyl 2018 10:41

Arkadaşlar Merhaba,

Umarım derdimi anlatabilirim.

TBL_BEDEN_SETI
ID MODEL_ID BEDEN
1 1 S
2 1 M
3 1 L
4 2 38
5 2 40
6 3 4-6 Yaş


TBL_MODEL
ID MODEL_ADI
1 T-SHIRT
2 SWEAT
3 PANTOLON

Şeklinde iki tablo düşünün!

TBL_MODEL_HRK tablosu gibi birşey olacak, bunun içinde ürün geldikçe veya gittikçe beden adetleri yazılacak ama bedenler farklı olduğundan fieldların mı sürekli değişmesi gerekecek nasıl olacak o kısmın mantığını kafamda kuramadım...

ertank
Üye
Mesajlar: 1231
Kayıt: 11 Eyl 2015 11:45

Re: Değişken Tablo Sütunları

Mesaj gönderen ertank » 03 Eyl 2018 11:23

Merhaba,

Özetle sizin TBL_MODEL_HRK tablosuna TBL_BEDEN_SETI tablosu içindeki ID bilgisini kaydetmeniz gerekiyor. Bu bilgi ile hangi model, model adı ve hangi beden olduğunu bulabilirsiniz.

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Değişken Tablo Sütunları

Mesaj gönderen nodetail » 03 Eyl 2018 12:06

Cevap için teşekkürler ama sanırım anlatamadım,

ben TBL_MODEL_HRK tablosuna; hangi modelden, ve hangi modelin hangi bedeninden geldiğini girebilmek istiyorum. ama beden setleri farklı çözemediğim burası işte...

Örnek tablodan yola çıkarsak, T-SHIRT'ün bede seti S, M, L ama SWEAT'in beden seti 38,40 bu durumda TBL_MODEL_HRK nasıl oluşturulacak.

ertank
Üye
Mesajlar: 1231
Kayıt: 11 Eyl 2015 11:45

Re: Değişken Tablo Sütunları

Mesaj gönderen ertank » 03 Eyl 2018 04:57

TBL_MODEL_HRK tablosunda TBL_BEDEN_SETI tablosundaki ID bilgisini BEDEN_ID kolonuna kaydettiğinizi ve kayıtların aşağıdaki gibi olduğunu varsayalım:

Kod: Tümünü seç

AUTOINC   BEDEN_ID
1         4
2         2
3         5
4         1
Siz hangi model ve beden bilgisi için aşağıdaki gibi bir SQL kullanabilirsiniz

Kod: Tümünü seç

SELECT TBL_BEDEN_SETI.MODEL_ID, TBL_BEDEN_SETI.BEDEN, TBL_MODEL_HRK.*
FROM TBL_MODEL_HRK
LEFT JOIN TBL_BEDEN_SETI ON TBL_BEDEN_SETI.ID = TBL_MODEL_HRK.BEDEN_ID
NOT: SQL komutunu test etmeden ezberden yazdım.

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Değişken Tablo Sütunları

Mesaj gönderen nodetail » 03 Eyl 2018 10:44

kendimi ifade edemiyor olmamın sıkıntısını yaşıyorum.
şöyle ki;

MODEL_ADI "T-SHIRT" ise TBL_MODEL_HRK tablosu

Kod: Tümünü seç

ID	MODEL_ID		S	M	L 
şeklinde olsun, ancak MODEL_ADI "SWEAT" ise TBL_MODEL_HRK tablosu

Kod: Tümünü seç

ID	MODEL_ID		38	40
şeklinde olsun. buradaki kurguyu yapamadım.

bir nevi ürünün varyantlarına göre şekillensin tablo ve varyantlarda yine kullanıcı tarafından girilebilecek.

ertank
Üye
Mesajlar: 1231
Kayıt: 11 Eyl 2015 11:45

Re: Değişken Tablo Sütunları

Mesaj gönderen ertank » 04 Eyl 2018 07:57

Sınırsız beden desteği vererek hareket tablosunda bu detayı kaydedemezsiniz. Tek satıra tek beden bilgisi kaydedilebilir. Ancak kod yazarak ekranda istediğiniz bilgiyi göstermeniz mümkün. Bir MemoryTable içine topladığınız bilgileri doldurarak kullanıcıya gösterebilirsiniz. Bu durumda da MemoryTable kolon sayısı çok yüksek tutularak kullanılabilir veya çalışma zamanında dinamik olarak ayarlanması gerekecektir.

Diğer taraftan, maksimum farklı beden bilgisini sınırlayarak ve hareket tablosunda maksimum beden sayısı kadar kolon tanımlayarak tek SQL komutu ile istediğinizi yapmanız mümkün olabilir. Tabi bu durumda TBL_BEDEN_SETI tablosuna ekstradan beden indeks bilgisini de kaydetmeniz gerekecektir. Kullanacağınız bedenlerin şöyle olduğunu varsayalım:
34 36 38 40 42 44 46 48 50 52
Bunların harf karşılıkları da aşağıdaki gibi olabilir (aşağıdaki örnekte bu harf karşılıkları kullanılmıştır)
XXS XS S M L XL XXL XXXL 4XL 5XL

veya
3XS XXS S M L XL XXL XXXL 4XL
şeklinde olabilir. Siz bu şekilde uygulamanızda maksimum 10 farklı beden tanımı desteklemiş oldunuz.

Bedenlerin ne olduğu kullanıcı tarafından ayarlanacak. Hareket tablosunda her bir satır için artık hangi beden olduğunu kaydedebilirsiniz. Kullanılan beden için ilgili indeks kolonuna rakamla 1 kaydetmeniz mümkün olabilir.

Kod: Tümünü seç

AUTOINC MODEL_ID BEDEN_ID  B01 B02 B03 B04 B05 B06 B07 B08 B09 B10
1       2        4               1
2       1        2                       1
3       2        5                   1
4       1        1                   1
Aynı şekilde eğer isterseniz kullanılan beden bilgisini değil ilgili beden BEDEN bilgisini (metin açıklaması) hareket tablosunun ilgili kolonuna kaydedebilirsiniz.

Beden bazında satış miktarlarını aşağıdaki gibi bir SQL ile elde etmeniz mümkün olabilir.

Kod: Tümünü seç

SELECT
  MODEL_ID, MODEL_ADI, COUNT(B01), COUNT(B02), COUNT(B03), COUNT(B04), COUNT(B05), COUNT(B06), COUNT(B07), COUNT(B08), COUNT(B09), COUNT(B10)
FROM
  TBL_MODEL_HRK
LEFT JOIN TBL_MODEL on TBL_MODEL.ID = TBL_MODEL_HRK.MODEL_ID
GROUP BY
  MODEL_ID, MODEL_ADI
Direk BEDEN bilgisini kaydediyor olduğunuz halde ilk etapta elde etmek istediğiniz formatta bilgiyi ise aşağıdaki gibi bir SQL ile elde etmeniz mümkün olabilir.

Kod: Tümünü seç

SELECT
  MODEL_ID, MODEL_ADI, B01, B02, B03, B04, B05, B06, B07, B08, B09, B10, COUNT(*) AS EKRANDA_GOSTERILMEYECEK
FROM
  TBL_MODEL_HRK
LEFT JOIN TBL_MODEL on TBL_MODEL.ID = TBL_MODEL_HRK.MODEL_ID
GROUP BY
  MODEL_ID, MODEL_ADI, B01, B02, B03, B04, B05, B06, B07, B08, B09, B10
Gelen veri içindeki EKRANDA_GOSTERILMEYECEK kolonu gruplama yapılabilmek için eklendiğinden kullanıcıya bu bilgiyi göstermenize gerek yok.

NOT: Tüm SQL bilgileri ezberden yazıldı. Kontrol edilerek kullanılması gerekir.

Cevapla