Yorumları: 45
Konuları: 15
Kayıt Tarihi: 18-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 68 Başlangıç
29-06-2022, Saat: 13:48
Merhaba Arkadaşlar,
Basit Çaplı Bir ERP programı yazmaya çalışıyorum, (kendi kullanımımız için)
bu programda malzeme listeleri var,
örneğin
a, b, c, d,e malzemeleri olsun,
c malzemesinin ürün reçetesinde d,e malzemeleri var.
a malzemesinin ürün reçetesinde ise b,c malzemeleri var.
yani a malzemesinin detaylı ürün reçetesinde b,d,e var
iç içe şartlı sonsuz tekrarlı bu veriyi nasıl çekebilirim.
malzemeler ve reçetelerin kaydını tutan ayrı ayrı tablolar mevcut.
There is no place like "127.0.0.1"
"Vatanını en çok seven, görevini en iyi yapandır."
Yorumları: 855
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.385 Uzman
(29-06-2022, Saat: 13:48)YILDIRIMBEY Adlı Kullanıcıdan Alıntı: Merhaba Arkadaşlar,
Basit Çaplı Bir ERP programı yazmaya çalışıyorum, (kendi kullanımımız için)
bu programda malzeme listeleri var,
örneğin
a, b, c, d,e malzemeleri olsun,
c malzemesinin ürün reçetesinde d,e malzemeleri var.
a malzemesinin ürün reçetesinde ise b,c malzemeleri var.
yani a malzemesinin detaylı ürün reçetesinde b,d,e var
iç içe şartlı sonsuz tekrarlı bu veriyi nasıl çekebilirim.
malzemeler ve reçetelerin kaydını tutan ayrı ayrı tablolar mevcut.
Merhabalar,
Sonsuz diye belirtiğiniz sorgunun sonucunda nasıl bir rapor alacaksınız?
Kendi adıma tam olarak anlayamadım.
İşlem sonucunda size veri olarak gelmesi gereken sonuç nedir?
JOIN
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 704
Konuları: 75
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.636 Programcı
Selamlar
Konuyu tam olarak ben de anlayamadım. Ancak, sanırım Mamul, yarı mamul ve hammaddeden oluşan bir ürün ağacına ulaşmak istiyorsunuz.
Benim fikrim, ilk olarak;
A: Mamul
B: Yarı Mamul
C,D : Hammadde olarak düşünülmeli.
A ürününü oluşturan yarı mamulü sorgulayabilmek için, B yi, ve B yi oluşturan hammaddeleri sorgulamak gerekir.
Bunun için de, join ya da, bir döngü ile, hammaddelerden geriye doğru bağlı oldukları yarı mamülü ve ona bağlı olarak ta mamülü listeleyip bunu bir temp tabloya atmakta fayda var.
Tablo yapısı sanırım şu şekilde olur.
Hammadde YarıMamul Mamul
C B A
D B A
E F G
H F G
şeklinde düşünülebilir.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 45
Konuları: 15
Kayıt Tarihi: 18-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 68 Başlangıç
Alıntı:a, b, c, d,e malzemeleri olsun,
c malzemesinin ürün reçetesinde d,e malzemeleri var.
a malzemesinin ürün reçetesinde ise b,c malzemeleri var.
yani a malzemesinin detaylı ürün reçetesinde b,d,e var
iç içe şartlı sonsuz tekrarlı bu veriyi nasıl çekebilirim.
burda kast ettiğim a malzemesinin detaylı ürün reçetesini çekmek istediğimde bana b ve c malzemelerini değil,
b,d,e malzemelerini vermesini istiyorum.
tablo yapım şu şekilde,
malzemeler, (malzeme bilgileri)
recete, (hangi malzemenin reçetesi olduğu kayıtları)
recetesatir, (ilgili reçetenin yapılması için gerekli alt malzemeler)
üç tablo da birbiriyle bağlantılı. (join yapısı ile)
delphi üzerinden fdconnection, fdquery ile bağlantı sağlıyorum.
Alıntı:Bunun için de, join ya da, bir döngü ile, hammaddelerden geriye doğru bağlı oldukları yarı mamülü ve ona bağlı olarak ta mamülü listeleyip bunu bir temp tabloya atmakta fayda var.
tam olarak bunu nasıl yapacağımı bilmiyorum. yani doğrudan mysql kodu içerisinde geriye doğru bağlı oldukları üst-alt reçeteleri nasıl iç içe listeletebilirim
There is no place like "127.0.0.1"
"Vatanını en çok seven, görevini en iyi yapandır."
Yorumları: 855
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.385 Uzman
29-06-2022, Saat: 16:17
(Son Düzenleme: 29-06-2022, Saat: 16:18, Düzenleyen: hi_selamlar.)
(29-06-2022, Saat: 15:03)YILDIRIMBEY Adlı Kullanıcıdan Alıntı: Alıntı:a, b, c, d,e malzemeleri olsun,
c malzemesinin ürün reçetesinde d,e malzemeleri var.
a malzemesinin ürün reçetesinde ise b,c malzemeleri var.
yani a malzemesinin detaylı ürün reçetesinde b,d,e var
iç içe şartlı sonsuz tekrarlı bu veriyi nasıl çekebilirim.
burda kast ettiğim a malzemesinin detaylı ürün reçetesini çekmek istediğimde bana b ve c malzemelerini değil,
b,d,e malzemelerini vermesini istiyorum.
tablo yapım şu şekilde,
malzemeler, (malzeme bilgileri)
recete, (hangi malzemenin reçetesi olduğu kayıtları)
recetesatir, (ilgili reçetenin yapılması için gerekli alt malzemeler)
üç tablo da birbiriyle bağlantılı. (join yapısı ile)
delphi üzerinden fdconnection, fdquery ile bağlantı sağlıyorum.
Alıntı:Bunun için de, join ya da, bir döngü ile, hammaddelerden geriye doğru bağlı oldukları yarı mamülü ve ona bağlı olarak ta mamülü listeleyip bunu bir temp tabloya atmakta fayda var.
tam olarak bunu nasıl yapacağımı bilmiyorum. yani doğrudan mysql kodu içerisinde geriye doğru bağlı oldukları üst-alt reçeteleri nasıl iç içe listeletebilirim
Merhabalar,
Umarım doğru anlamışımdır.
Test etmek için >> https://www.db-fiddle.com/f/si5pHcCqqpJSccR9jX35Az/0 > sayfa açıldıktan sonra sol üst bölümde RUN tuşuna basmayı unutmayın lütfen.
drop table if exists malzemeler;
create table malzemeler (id integer, kodu varchar(100), adi varchar(100));
insert into malzemeler (id, kodu, adi) values (1, '001', 'İPLİK');
insert into malzemeler (id, kodu, adi) values (2, '002', 'KUMAŞ');
insert into malzemeler (id, kodu, adi) values (3, '003', 'DÜĞME');
drop table if exists recete;
create table recete (id integer, kodu varchar(100), adi varchar(100));
insert into recete (id, kodu, adi) values (1, '001', 'GÖMLEK');
insert into recete (id, kodu, adi) values (2, '002', 'ETEK');
drop table if exists recetesatir;
create table recetesatir (id integer, recete_id integer, malzemeler_id integer, miktar integer);
insert into recetesatir (id, recete_id, malzemeler_id, miktar) values (1, 1, 1,100);
insert into recetesatir (id, recete_id, malzemeler_id, miktar) values (2, 1, 2,111);
insert into recetesatir (id, recete_id, malzemeler_id, miktar) values (3, 2, 2,10);
insert into recetesatir (id, recete_id, malzemeler_id, miktar) values (4, 2, 3,11);
with tbl as (
select
recetesatir.recete_id,
malzemeler.id,
malzemeler.kodu,
malzemeler.adi,
recetesatir.miktar
from recetesatir
left join malzemeler on malzemeler.id=recetesatir.malzemeler_id
)
select
recete.kodu,
recete.adi,
tbl.*
from recete
left join tbl on tbl.recete_id=recete.id
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 45
Konuları: 15
Kayıt Tarihi: 18-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 68 Başlangıç
cevabınız için çok teşekkür ederim @ hi_selamlar
sizin vermiş olduğunuz yapıya benzer olarak with .. as ile bir bileşen oluşturmadan doğrudan ilgili tabloları join yapısıyla bağlayabiliyorum.
benim kast ettiğim, iç içe geçmiş sonsuz alt malzeme listesi olabilir örnek vermek gerekirse,
bilgisayar => monitor + kasa set + fare + klavye + hoparlör
kasa set=> boş kasa + ekran kartı + psu set+ işlemci +...
psu set => psu + güç kablosu
sizin vermiş olduğunuz ve benim şu an yapabildiğim yöntemde bilgisayarın malzeme listesini select yaptığımda bana "monitor + kasa set + fare + klavye + hoparlör" sonucunu veriyor.
ama benim istediğim alt alta sonsuz sorgu yaparak;
"monitor + boş kasa + ekran kartı + psu + güç kablosu + işlemci+ fare + klavye + hoparlör" olarak çekebilmek.
yani kasa setin ve psu setin alt reçetelerini de sql tümleciği olarak iç içe sonsuz döngü ile sağlamak.
tabi database i kasmayacak yöntemler var ise tercih ederim
There is no place like "127.0.0.1"
"Vatanını en çok seven, görevini en iyi yapandır."
Yorumları: 708
Konuları: 22
Kayıt Tarihi: 24-03-2017
Rep Puanı: 4.526 Uzman
(29-06-2022, Saat: 21:46)YILDIRIMBEY Adlı Kullanıcıdan Alıntı: cevabınız için çok teşekkür ederim @hi_selamlar
sizin vermiş olduğunuz yapıya benzer olarak with .. as ile bir bileşen oluşturmadan doğrudan ilgili tabloları join yapısıyla bağlayabiliyorum.
benim kast ettiğim, iç içe geçmiş sonsuz alt malzeme listesi olabilir örnek vermek gerekirse,
bilgisayar => monitor + kasa set + fare + klavye + hoparlör
kasa set=> boş kasa + ekran kartı + psu set+ işlemci +...
psu set => psu + güç kablosu
sizin vermiş olduğunuz ve benim şu an yapabildiğim yöntemde bilgisayarın malzeme listesini select yaptığımda bana "monitor + kasa set + fare + klavye + hoparlör" sonucunu veriyor.
ama benim istediğim alt alta sonsuz sorgu yaparak;
"monitor + boş kasa + ekran kartı + psu + güç kablosu + işlemci+ fare + klavye + hoparlör" olarak çekebilmek.
yani kasa setin ve psu setin alt reçetelerini de sql tümleciği olarak iç içe sonsuz döngü ile sağlamak.
tabi database i kasmayacak yöntemler var ise tercih ederim 
Dinamik sql cümlesi oluşturarak çözüm üretebileceğinizi tahmin ediyorum.
Şuraya göz atmanızda fayda var.
https://dev.mysql.com/doc/refman/8.0/en/...ments.html
Yorumları: 240
Konuları: 6
Kayıt Tarihi: 22-10-2018
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.2
- Delphi 10.1
- Delphi 7
- Lazarus / FPC
Rep Puanı: 1.924 Programcı
01-07-2022, Saat: 02:33
(Son Düzenleme: 01-07-2022, Saat: 02:54, Düzenleyen: mustafaozpinar.)
(29-06-2022, Saat: 13:48)YILDIRIMBEY Adlı Kullanıcıdan Alıntı: Merhaba Arkadaşlar,
Basit Çaplı Bir ERP programı yazmaya çalışıyorum, (kendi kullanımımız için)
bu programda malzeme listeleri var,
örneğin
a, b, c, d,e malzemeleri olsun,
c malzemesinin ürün reçetesinde d,e malzemeleri var.
a malzemesinin ürün reçetesinde ise b,c malzemeleri var.
yani a malzemesinin detaylı ürün reçetesinde b,d,e var
iç içe şartlı sonsuz tekrarlı bu veriyi nasıl çekebilirim.
malzemeler ve reçetelerin kaydını tutan ayrı ayrı tablolar mevcut.
Selamlar,
Sanırım, en son etapta, dışarıdan alınan malzemeden ne kadar kullanacağınızı bulmak istiyorsunuz. Bunun için Recursive query oluşturmanız gerekiyor. Bu da MySQL versiyonuna göre değişiyor. Şu sayfaya bir göz atarsanız size yararı dokunur.
https://stackoverflow.com/questions/2021...sive-query
Ayrıca şu linkte de bu komutu nasıl oluşturacağınızı anlatıyor:
https://dev.mysql.com/worklog/task/?id=3634
EK:
With komutu ile de yapılabiliyor. Kullanımı için şu sayfaya bakın lütfen.
https://dev.mysql.com/doc/refman/8.0/en/with.html
Bunları V8.0'dan eski versiyonlarda kullanamıyorsunuz.
|