Re: 3 tablo arasındaki join işleminde koşul kullanmak

From: Alpaslan AKDAĞ <alpaslanakdag(at)gmail(dot)com>
To: Java Notlarım <javanotlarim(at)gmail(dot)com>
Cc: "pgsql-tr-genel(at)postgresql(dot)org" <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: 3 tablo arasındaki join işleminde koşul kullanmak
Date: 2024-09-20 14:04:27
Message-ID: CAHKeUX9fihjQTeEN=aTSx-eXXRtZd1Go85h5=1iGoygu=a9dzQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

merhaba

asagidaki sql i kullanabilirsin.

select mm.malzeme_ad,
case
when mm.bulundugu_yer_turu_id=1 then tt.tasit_plaka
when mm.bulundugu_yer_turu_id=2 then dd.depo_ad
end as adres
from public.tb_malzeme mm
left join public.tb_depo dd on mm.bulundugu_yer_id=dd.id
left join public.tb_tasit tt on mm.bulundugu_yer_id=tt.id;

*From: *Java Notlarım <javanotlarim(at)gmail(dot)com>
*Date: *Friday, 20 September 2024 at 15:22
*To: *"pgsql-tr-genel(at)postgresql(dot)org" <pgsql-tr-genel(at)postgresql(dot)org>
*Subject: *3 tablo arasındaki join işleminde koşul kullanmak

Merhaba. Öncelikle iyi çalışmalar dilerim.

3 ayrı tablom var;

- Malzeme tablosu
- Taşıt Tablosu
- Depo Tablosu.

Bir malzeme taşıtta veya depoda olabilir. Malzeme tablosunda bunu belirtmek
için "bulundugu_yer_tur_id" alanı var.

Örneğin;

- malzeme, taşıtta ise yani bulundugu_yer_turu_id=1 ise
"tb_tasit" tablosundaki "tasit_plaka" değeri,
- malzeme, depoda ise yani bulundugu_yer_turu_id=2 ise "tb_depo"
tablosundaki "depo_ad" değeri

alias bir alana çekmek istiyorum.

select m.malzeme_ad, ( bulunduğu yer ("taşıt plakası" veya "depo adı"
verisinin listeleneceği ortak alias bir alan) from tb_malzeme m

LEFT JOIN tb_tasit t on t.id=m. bulundugu_yer_id

LEFT JOIN tb_depo d on d.id=m. bulundugu_yer_id

Yukarıdaki sorguya if else yapısını eklemem gerektiğini düşünüyorum; yani

if m.bulundugu_yer_tur_id=1 then LEFT JOIN tb_tasit t on t.id=m.
bulundugu_yer_id

or

if m.bulundugu_yer_tur_id=2 then LEFT JOIN tb_depo d on d.id=m.
bulundugu_yer_id

ama başaramadım.

Bu konuda yardımcı olursanız çok sevinirim.

Malzeme tablosu

CREATE TABLE public.tb_malzeme
(
id smallserial NOT NULL,
malzeme_ad text,
bulundugu_yer_turu_id smallint,
bulundugu_yer_id smallint,
PRIMARY KEY (id)
);

Taşıt Tablosu

CREATE TABLE public.tb_tasit
(
id smallserial NOT NULL,
tasit_plaka text,
PRIMARY KEY (id)
);

Depo tablosu

CREATE TABLE public.tb_depo
(
id smallserial NOT NULL,
depo_ad text,
PRIMARY KEY (id)
);

Browse pgsql-tr-genel by date

  From Date Subject
Next Message N. Can KIRIK 2024-09-20 19:01:15 Re: 3 tablo arasındaki join işleminde koşul kullanmak
Previous Message İbrahim Sarıçiçek 2024-09-20 13:36:52 Re: 3 tablo arasındaki join işleminde koşul kullanmak