SQL Sorguile Tablo alanları arasında satırsatır çapım işlemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 9
- Kayıt: 04 Tem 2007 01:05
- Konum: Tekirdağ
SQL Sorguile Tablo alanları arasında satırsatır çapım işlemi
Merhaba öncelikle Programcılığa ve delphiye meraklı olan biri olarak bu formda aradığım çoğu şeyi bulabildim ve kendimi bu form sayesinde geliştirmeye çalışıyorum şuan yavaş ta olsa kendimde sizler sayesinde ilerleme kaydedebiliyorum şimdiye kadar üye değildim yeni üye oldum sayılır bu ilk yazım ve isteğim çalışmakta olduğum şirkette MSSQL SERVER databse olan ve databesi açık olan bir program kullanmaktayım aşağıda tarif ettiğim bir sorunum var ve çok uğraşmama rağmen bu programcılık işine yeni başladığım için bir türlü çözemedim bana yardımcı olursanız çok sevineceğim kolay gelsin.
Burada PARTIH ve PARTIBI PARTİ Başlık ve Detay kısmıdır
BRECB ise REÇETE Tablomdur
PARTIH Tablosundaki KARISIM alanı ile BRECB Alanındaki MIKTAR2 Alanının çarpımı alınacak
PARTIBI Tablosundaki MIKTAR alanı ile BRECB Alanındaki MIKTAR1 Alanının çarpımı alınacak
AdoQuery kullanarak
Edit vasıtası ile PNO(Parti numarası mesela 000010 )Yazdığım zaman bana miktarlarla birlikte vermesini istiyorum PARTIH ile BRECB Tablolarını birleştirdim fakat PARTIBI Tablosunu birleştiremedim (yani üç tabloyu).
Şu sorgu ile BRECB i alabiliyorum.
Adoparti.Close;
Adoparti.SQL.Text:=’Select * From PARTIH where PNO=’+QuotedStr(trim(edit1.text));
Adoparti.Open;
Recete:=trim(adoparti.fieldbyname(‘BRNO’).asstring);
Adorecete.close;
Adorecete.SQL.Text:=’select * from BRECB where RNO=’+Quotedstr(recete);
Adorecete.open;
PARTIH
SIRKET----PNO------TARIH--BRNO---MAKINA-------KARISIM
01---------000010--------------4------BHT40C---------2500
01---------000020--------------5------BHT600C--------5750
01----------000030-------------6------BHT10C----------2610
01----------000040-------------7------BHT25C--------- 5400
PARTIBI
SIRKET------PNO------SATIR---MUSTERI-----MKOD----MIKTAR
01---------000010------1--------KO59--------15001-------330
01---------000010------2---------K059--------55001--------14
01---------000010------3---------KO59--------15001--------12
01---------000020------1---------KO58--------55001-------279
01---------000020------2---------K058--------15004-------276
01---------000030------1---------K059---------70001------400
BRECB
SIRKET------RNO-----SATIR----MKOD-----MIKTAR1--------MIKTAR2
01-------------2----------1--------K34-----------0,5---------------- 0
01-------------2----------2 -------K36-------------2-----------------0
01-------------2----------3--------BY213----------3---------------0,8
01-------------2----------4--------K35-------------0---------------5,4
01-------------3----------1--------K01-----------0,4-----------------0
01-------------3----------2--------K38-------------1------------0,154
01-------------3----------3--------BY2021-------0,5----------------0
01-------------3----------4--------K16--------------1-----------0,011
MIKTARI Kendi içinde şu şekilde toplattım ama MIKTAR1 ile nasıl çarptıracağım satırlar var satırları tek tek çarptırmalıyım.
Form1.AdoQuery1.Close;
Form1.AdoQuery1.SQL.Clear;
Form1.AdoQuery1.SQL.Add(‘SELECT SUM(MIKTAR) AS TOPLAM FROM PARTIBI’);
Form1.AdoQuery1.Open;
admin arkadaşımıza acemilikle gönderdiğim mesaj için özür dilerim ilk kez foruma yazıyorum ve acele gönderdim
Burada PARTIH ve PARTIBI PARTİ Başlık ve Detay kısmıdır
BRECB ise REÇETE Tablomdur
PARTIH Tablosundaki KARISIM alanı ile BRECB Alanındaki MIKTAR2 Alanının çarpımı alınacak
PARTIBI Tablosundaki MIKTAR alanı ile BRECB Alanındaki MIKTAR1 Alanının çarpımı alınacak
AdoQuery kullanarak
Edit vasıtası ile PNO(Parti numarası mesela 000010 )Yazdığım zaman bana miktarlarla birlikte vermesini istiyorum PARTIH ile BRECB Tablolarını birleştirdim fakat PARTIBI Tablosunu birleştiremedim (yani üç tabloyu).
Şu sorgu ile BRECB i alabiliyorum.
Adoparti.Close;
Adoparti.SQL.Text:=’Select * From PARTIH where PNO=’+QuotedStr(trim(edit1.text));
Adoparti.Open;
Recete:=trim(adoparti.fieldbyname(‘BRNO’).asstring);
Adorecete.close;
Adorecete.SQL.Text:=’select * from BRECB where RNO=’+Quotedstr(recete);
Adorecete.open;
PARTIH
SIRKET----PNO------TARIH--BRNO---MAKINA-------KARISIM
01---------000010--------------4------BHT40C---------2500
01---------000020--------------5------BHT600C--------5750
01----------000030-------------6------BHT10C----------2610
01----------000040-------------7------BHT25C--------- 5400
PARTIBI
SIRKET------PNO------SATIR---MUSTERI-----MKOD----MIKTAR
01---------000010------1--------KO59--------15001-------330
01---------000010------2---------K059--------55001--------14
01---------000010------3---------KO59--------15001--------12
01---------000020------1---------KO58--------55001-------279
01---------000020------2---------K058--------15004-------276
01---------000030------1---------K059---------70001------400
BRECB
SIRKET------RNO-----SATIR----MKOD-----MIKTAR1--------MIKTAR2
01-------------2----------1--------K34-----------0,5---------------- 0
01-------------2----------2 -------K36-------------2-----------------0
01-------------2----------3--------BY213----------3---------------0,8
01-------------2----------4--------K35-------------0---------------5,4
01-------------3----------1--------K01-----------0,4-----------------0
01-------------3----------2--------K38-------------1------------0,154
01-------------3----------3--------BY2021-------0,5----------------0
01-------------3----------4--------K16--------------1-----------0,011
MIKTARI Kendi içinde şu şekilde toplattım ama MIKTAR1 ile nasıl çarptıracağım satırlar var satırları tek tek çarptırmalıyım.
Form1.AdoQuery1.Close;
Form1.AdoQuery1.SQL.Clear;
Form1.AdoQuery1.SQL.Add(‘SELECT SUM(MIKTAR) AS TOPLAM FROM PARTIBI’);
Form1.AdoQuery1.Open;
admin arkadaşımıza acemilikle gönderdiğim mesaj için özür dilerim ilk kez foruma yazıyorum ve acele gönderdim
En son huseyineke71 tarafından 03 Ağu 2007 11:03 tarihinde düzenlendi, toplamda 5 kere düzenlendi.
Merhaba,
Alias kullanmayı öğrenirseniz işinizi görebilirsiniz. Alias bir tablo için takma isim vermek demektir. Bununla alanları yazarken hangi alanın hangi tabloya karşılık geldiği belli olur.
gibi bir kullanım. yukarıdaki örnekte tablo1 a, tablo2 b, tablo3 c aliasını kullanıyor. Bunun yerine anlamlı kelimeler de kullanabilirsiniz. Ben kısa olsun diye örnek verdim.
Sizin tabloların bağlantısını aceleden baktığım için tam anlayamadığımdan tam karşılığını yazamadım. Yapınızı buna göre kurun işinizin görülmesi lazım.
Kolay gelsin.
Alias kullanmayı öğrenirseniz işinizi görebilirsiniz. Alias bir tablo için takma isim vermek demektir. Bununla alanları yazarken hangi alanın hangi tabloya karşılık geldiği belli olur.
Kod: Tümünü seç
select a.urun,b.miktar*c.sayi
from tablo1 a, tablo2 b, tablo3 c
where a.kodu=b.kod and c.kodlar=b.biralan
Sizin tabloların bağlantısını aceleden baktığım için tam anlayamadığımdan tam karşılığını yazamadım. Yapınızı buna göre kurun işinizin görülmesi lazım.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
-
- Üye
- Mesajlar: 9
- Kayıt: 04 Tem 2007 01:05
- Konum: Tekirdağ
SQL Sorguile Tablo alanları arasında satırsatır çapım işlemi
ilginiz için çok teşekkür ederim PARTIH ve PARTIBI Tabloları Parti Başlık ve Satırı teşkil ediyor BRECB ise Reçeteyi ama ben burada satır satır çarptırma işlemi yaptırmak istiyorum mesela PARTIBI tablosu MIKTAR alanı 3 satır bazen ,8 olabiliyor değişken yani kendi içinde toplattıktan sonra BRECB deki MIKTAR1 alanı ile çarptırmalıyım oda değişken ve oda 5,8,bazen12 satır oluyor PARTIH Tablosu ilede ayni şekilde KARISIM ile BRECB deki MIKTAR2 alanını çarptırmalıyım.
Merhaba,
Birinci mesajınızdaki verilere göre örnek bir çıktı verebilir misiniz? Sanki kağıt üzerinde hesaplıyormuşsunuz gibi hesaplayıp sonuçta çıkanları yazabilir misiniz? Rakamları hesaplayarak. Yaşlılıktan olacak, gerçek rakamlar olmadan kafam basmıyor.
Kolay gelsin.
Birinci mesajınızdaki verilere göre örnek bir çıktı verebilir misiniz? Sanki kağıt üzerinde hesaplıyormuşsunuz gibi hesaplayıp sonuçta çıkanları yazabilir misiniz? Rakamları hesaplayarak. Yaşlılıktan olacak, gerçek rakamlar olmadan kafam basmıyor.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
-
- Üye
- Mesajlar: 9
- Kayıt: 04 Tem 2007 01:05
- Konum: Tekirdağ
SQL Sorguile Tablo alanları arasında satırsatır çapım işlemi
Yok estfurullah benimde yaşım var ona bakarsanız ben zanedersem açıklayamadım tam olarak buradaki tablodaki alanlar gerçek değerler şu şekilde PARTIBI deki MIKTAR alanı 3 satır kendi içinde toplarsak 356 bu rakam KG Toplamıdır 356 ile BRECB deki 1 satır 356*0,5=178, 2 satır 356*2=712,3 satır 356*3=1068 yani kaç satır olursa çünkü değişken bir alan satır sayısı burada ve diğerlerinde de değişiyor ben bunu hesaplatıp farrklı bir tabloya kaydetmek istiyorum tablolarım aynı databasede tablolar arsı işlem yaptıramıyorum
Merhaba,
Hesaplamayı anladım ama sanki tablolar arası bağlantı yok gibi.
Yani PARTIBI tablosunda PNO ya göre almışsınız ama BRECB tablosuna PNO ya karşılık gelen bir alan yok. Orada da sanki RNO ya göre almışsınız. Buna göre bir bağlantı kurulamaz. PARTIBI deki ilk üç satır ile BRECB tablosundaki ilk dört satır birbiri ile çarpılacaksa bağlantı da bir problem vardır. yani BRECB de PNOID gibi bir alan ekleyip oraya da 000000010 rakamını atmanız lazımdı.
Bir de istediğiniz sonucu
SIRKET PNO CARPIM
-------- -------- ---------
3433 343 3434
3433 344 3434
3434 434 3443
gibi istemiştim sonuçta ne çıkacağını yukarıdaki gibi yazabilirsiniz. Gerçek rakamlarla.Bu mesajı bir okuyun cuma dan sonra görüşürüz.
Kolay gelsin.
Hesaplamayı anladım ama sanki tablolar arası bağlantı yok gibi.
Yani PARTIBI tablosunda PNO ya göre almışsınız ama BRECB tablosuna PNO ya karşılık gelen bir alan yok. Orada da sanki RNO ya göre almışsınız. Buna göre bir bağlantı kurulamaz. PARTIBI deki ilk üç satır ile BRECB tablosundaki ilk dört satır birbiri ile çarpılacaksa bağlantı da bir problem vardır. yani BRECB de PNOID gibi bir alan ekleyip oraya da 000000010 rakamını atmanız lazımdı.
Bir de istediğiniz sonucu
SIRKET PNO CARPIM
-------- -------- ---------
3433 343 3434
3433 344 3434
3434 434 3443
gibi istemiştim sonuçta ne çıkacağını yukarıdaki gibi yazabilirsiniz. Gerçek rakamlarla.Bu mesajı bir okuyun cuma dan sonra görüşürüz.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
-
- Üye
- Mesajlar: 9
- Kayıt: 04 Tem 2007 01:05
- Konum: Tekirdağ
SQL Sorguile Tablo alanları arasında satırsatır çapım işlemi
ilginiz için çok teşekkür ederim evet benim sorunumu gerçekten iyi analiz etmişsiniz bu programı ben yapmadım bu program var ve databesei açık ben bundan reçete raporu almak için uğraşıyorum aynı zamanda kendimide geliştiriyorum PARTIH ta PNO VE BRNO alanları ile BRECB deki RNO alanları sayesinde Parti numarasını sorgulatarak(000010)BRECB yi yani reçeteyi alabiliyorum fakat PARTIBI tablosundaki MIKTAR alanı yani KG alanıda bana lağzım bir türlü halledemedim bu tabloları tek bir tabloya nasıl birleştirebilirim kopyalayabilirmiyim veya transfer işlemi gibi birşey şunun gibi olmasını istiyorum
SIRKET-PNO-RNO-SATIR-MKOD-MIKTAR1-MIKTAR-MIKTAR2-KARISIM
01---0000010--2-----1-----K34------- 0,5-----356-------0--------2500
01--000010-----2----2-----K36---------2------356------0,8-------2500
01---000010----2----3-----B12---------6------356------0,6-------2500
01---000010----3----1-----K18--------0,9-----320-------2--------4700
01---000010----3----2-----B08---------5------320------0,4-------4700
bu değerleri çarptırdığım zaman daha sonra başka bir tabloda bunun gibi olmasını istiyorum
SIRKET---PNO------RNO---SATIR--MKOD---MIKTAR1--MIKTAR2
01---------000010----2-------1-----K34------- 178--------0
01---------000010----2-------2-----K36--------712--------2000
01---------000010----2-------3-----B12--------2136-------1500
01---------000010----3-------1-----K18--------288---------9400
01---------000010----3-------2-----B08--------1600--------1880
SIRKET-PNO-RNO-SATIR-MKOD-MIKTAR1-MIKTAR-MIKTAR2-KARISIM
01---0000010--2-----1-----K34------- 0,5-----356-------0--------2500
01--000010-----2----2-----K36---------2------356------0,8-------2500
01---000010----2----3-----B12---------6------356------0,6-------2500
01---000010----3----1-----K18--------0,9-----320-------2--------4700
01---000010----3----2-----B08---------5------320------0,4-------4700
bu değerleri çarptırdığım zaman daha sonra başka bir tabloda bunun gibi olmasını istiyorum
SIRKET---PNO------RNO---SATIR--MKOD---MIKTAR1--MIKTAR2
01---------000010----2-------1-----K34------- 178--------0
01---------000010----2-------2-----K36--------712--------2000
01---------000010----2-------3-----B12--------2136-------1500
01---------000010----3-------1-----K18--------288---------9400
01---------000010----3-------2-----B08--------1600--------1880
Merhaba,
Bence verdiğiniz bilgilerde tutarsızlık var. Siz gerçek verilere göre örnek vermediğiniz için ben bir mantık çıkaramıyorum. Örneğin ilk örnekte PARTIH tablosunda PNO=000010 un karşısında BRNO=4 tür ama BRECB tablosunda ilk 4 satırın RNO değerini ben 4 umarken siz RNO=2 yazmışsınız.
Son mesajınızda K18 malı var ama ilk mesajda yok. Son mesajda Miktar kısmında 320 var ama ilk mesaja göre 320 yi elde edeceğimiz bir rakam yok. O yüzden bir mantık kuramıyorum.
Lütfen düzgün bir örnek verin ki bir mantık çıkarayım ona göre sonuca bakalım.
Kolay gelsin.
Bence verdiğiniz bilgilerde tutarsızlık var. Siz gerçek verilere göre örnek vermediğiniz için ben bir mantık çıkaramıyorum. Örneğin ilk örnekte PARTIH tablosunda PNO=000010 un karşısında BRNO=4 tür ama BRECB tablosunda ilk 4 satırın RNO değerini ben 4 umarken siz RNO=2 yazmışsınız.
Son mesajınızda K18 malı var ama ilk mesajda yok. Son mesajda Miktar kısmında 320 var ama ilk mesaja göre 320 yi elde edeceğimiz bir rakam yok. O yüzden bir mantık kuramıyorum.
Lütfen düzgün bir örnek verin ki bir mantık çıkarayım ona göre sonuca bakalım.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
-
- Üye
- Mesajlar: 9
- Kayıt: 04 Tem 2007 01:05
- Konum: Tekirdağ
Merhaba,
Verilen ilk mesajdaki verileri kendimce düzelterek aldığım aşağıdaki koda göre istediğinizin olması lazım.
yukarıdaki kod üzerinde biraz çalışın. Çünkü ben mesela sıra no kısmını sıralayacak şekilde yapmamışım. Sizde sıralı gelmiyorsa sıralatabilirsiniz. Kolay gelsin.
Verilen ilk mesajdaki verileri kendimce düzelterek aldığım aşağıdaki koda göre istediğinizin olması lazım.
Kod: Tümünü seç
SELECT A.SIRKET, A.PNO, B.RNO,B.SATIR,B.MKOD,
B.MIKTAR1*(SELECT SUM(C.MIKTAR) FROM PARTIBI C WHERE A.PNO=C.PNO)AS MIKTAR1,
A.KARISIM*B.MIKTAR2 AS MIKTAR2
FROM PARTIH A,BRECB B
WHERE A.BRNO=B.RNO
ORDER BY A.PNO
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis