(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.