SQL Sorguile Tablo alanları arasında satırsatır çapım işlemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
huseyineke71
Ü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

Mesaj gönderen huseyineke71 »

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 :oops:
En son huseyineke71 tarafından 03 Ağu 2007 11:03 tarihinde düzenlendi, toplamda 5 kere düzenlendi.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

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.

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
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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
huseyineke71
Ü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

Mesaj gönderen huseyineke71 »

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.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
huseyineke71
Ü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

Mesaj gönderen huseyineke71 »

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
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
huseyineke71
Ü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

Mesaj gönderen huseyineke71 »

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
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
huseyineke71
Üye
Mesajlar: 9
Kayıt: 04 Tem 2007 01:05
Konum: Tekirdağ

Mesaj gönderen huseyineke71 »

özür dilerim ben son yazdıklarımı mantık olarak istediğim yeni bir tabloya bu şekilde nasıl atarım demiştim ama karıştırmışım demekki mail adresinizi bana yazabilirseniz size gerçek databaseden jpg olarak gönderebilirmiyim
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
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

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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Cevapla