SQL ile tablodan aynı alanı çekebilme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen Abrak »

selamün aleyküm;

SATIS
----------
FIRMA_KOD
ALIS_FIRMA_KOD
..
..

FIRMA
-----------
FIRMA_KOD
FIRMA_UNVAN
..
..

:ara anahtar kelime nedir?
işin mantığını bulamadım

Satışları girerken FIRMA_KOD ve ALIS_FIRMA_KOD aynı FIRMA Table'sindeki firma listesini kullanıyorum master-detail de bağlantı sorunum yok fakat;
CXGrid ile bunları tek kolonda listelerken SATIS daki FIRMA_KOD ve ALIS_FIRMA_KOD u iki defa FIRMA'dan nasıl alacağım

Kod: Tümünü seç

select * from SATIS,FIRMA Where satıs.fırma_kod=fırma.fırma.kod and satıs.alıs_fırma_kod = fırma.fırma_kod
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen mkysoft »

join komutunu kullanmalısınız.

Kod: Tümünü seç

select * from tablo1 join tablo2 using tablo1alan1=tablo2alan1
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen Abrak »

Resim

Uploaded with ImageShack.us

Şimdi daha net oldu sanırım SATIS olarak FIRMA_KOD ve SATICI_FIRMA_KOD girişi var ama tek bir FIRMA table var ikisinide aynı anda nasıl alacağım FIRMA tablosundan
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen mkysoft »

yine join ile yapabileceğiniz gibi iç içe sql (subquery) yazabilrisiniz.

Kod: Tümünü seç

select *,(select ad from firma where id=firmakod) as firma_alici from satis
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen aslangeri »

s.a
firma tablosuna iki kere join yapabilirsiniz.

Kod: Tümünü seç

select XXXXXX
from SATIS
left join FIRMA SATICIFIRMA on SATICIFIRMA.kodu=SATIS.SATICI_FIRMA_KOD
left joın FIRMA ALICIFIRMA on ALICIFIRMA.kodu=SATIS.FIRMA_KOD
gibi
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen Abrak »

aslangeri yazdı:s.a
firma tablosuna iki kere join yapabilirsiniz.

Kod: Tümünü seç

select XXXXXX
from SATIS
left join FIRMA SATICIFIRMA on SATICIFIRMA.kodu=SATIS.SATICI_FIRMA_KOD
left joın FIRMA ALICIFIRMA on ALICIFIRMA.kodu=SATIS.FIRMA_KOD
gibi
kolay gelsin.
mkysoft yazdı:yine join ile yapabileceğiniz gibi iç içe sql (subquery) yazabilrisiniz.

Kod: Tümünü seç

select *,(select ad from firma where id=firmakod) as firma_alici from satis
Arkadaşlar ben anlayamadım işin espirisini çok özür dilerim enbaştaki sorumdaki tablo yapısına bakarmısınız tekrar yanlışlık olmasın;

Kod: Tümünü seç

SELECT * from SATIS
 LEFT JOIN FIRMA ON SATIS.FIRMA_KOD=FIRMA.FIRMA_KOD
 LEFT JOIN FIRMA ON SATIS.SATICI_FIRMA_KOD=FIRMA.FIRMA_KOD

2 nci join de hatam var aynı FIRMA tablosuna bağlanmaya çalıştığımdandır
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen emin_as »

Tablolara isim vererek dene.

Kod: Tümünü seç

SELECT * from SATIS S
LEFT JOIN FIRMA A ON S.FIRMA_KOD=A.FIRMA_KOD
LEFT JOIN FIRMA B ON S.SATICI_FIRMA_KOD=B.FIRMA_KOD
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen Abrak »

çok basittir ama çok zaman harcadım :(

aşağıda belirttiğim gibi yapmak istediğim FIRMA_UNVANI ve SATICI_FIRMA_UNVANI aynı FIRMA Tablesinden çekmek
Resim


joinle çektiğimde ise SATIŞ SATIRLARI tekrarlanmış oluyor

Resim
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen mkysoft »

yazdığınız SQL'i paylaşırsanız daha kolay olacak.
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen Abrak »

mkysoft yazdı:yazdığınız SQL'i paylaşırsanız daha kolay olacak.

Kod: Tümünü seç

select * from SATIS
right join FIRMA on (SATIS.FIRMA_KOD=FIRMA.FIRMA_KOD or SATIS.SATICI_FIRMA_KOD=FIRMA.FIRMA_KOD)
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen mkysoft »

Abrak yazdı:
mkysoft yazdı:yazdığınız SQL'i paylaşırsanız daha kolay olacak.

Kod: Tümünü seç

select * from SATIS
right join FIRMA on (SATIS.FIRMA_KOD=FIRMA.FIRMA_KOD or SATIS.SATICI_FIRMA_KOD=FIRMA.FIRMA_KOD)

Kod: Tümünü seç

SELECT * FROM SATIS  LEFT JOIN FIRMA F1 ON FIRMA_KOD=F1.FIRMA_KOD  LEFT JOIN FIRMA F2 ON SATICI_FIRMA_KOD=F2.FIRMA_KOD
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Re: SQL ile tablodan aynı alanı çekebilme

Mesaj gönderen Abrak »

mkysoft yazdı:
Abrak yazdı:
mkysoft yazdı:yazdığınız SQL'i paylaşırsanız daha kolay olacak.

Kod: Tümünü seç

select * from SATIS
right join FIRMA on (SATIS.FIRMA_KOD=FIRMA.FIRMA_KOD or SATIS.SATICI_FIRMA_KOD=FIRMA.FIRMA_KOD)

Kod: Tümünü seç

SELECT * FROM SATIS  LEFT JOIN FIRMA F1 ON FIRMA_KOD=F1.FIRMA_KOD  LEFT JOIN FIRMA F2 ON SATICI_FIRMA_KOD=F2.FIRMA_KOD
Tamamdır çok tşk ederim F1 F2 benim istediğim di :bravo:
Cevapla