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

From: Ender Uygun <enderuygun(at)hotmail(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-21 06:34:42
Message-ID: PAXP192MB158430440A8F8AAF6DF34062C76D2@PAXP192MB1584.EURP192.PROD.OUTLOOK.COM
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

Selamlar,

Bunu istiyor olabilir misiniz?

select m.malzeme_ad,

case when m.bulundugu_yer_turu_id=1 then t.tasit_plaka
when m.bulundugu_yer_turu_id=2 then d.depo_ad
else ‘malzeme_bulunamadi’ end as malzeme_detay

from tb_malzeme m
LEFT JOIN tb_tasit t on t.id<http://t.id/>=m. bulundugu_yer_id
LEFT JOIN tb_depo d on d.id<http://d.id/>=m. bulundugu_yer_id

Sent from my iPhone.

On 20 Sep 2024, at 15:22, Java Notlarım <javanotlarim(at)gmail(dot)com> wrote:


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<http://t.id>=m. bulundugu_yer_id
LEFT JOIN tb_depo d on d.id<http://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<http://t.id>=m. bulundugu_yer_id
or
if m.bulundugu_yer_tur_id=2 then LEFT JOIN tb_depo d on d.id<http://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)
);

In response to

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Java Notlarım 2024-09-23 08:00:33 Re: 3 tablo arasındaki join işleminde koşul kullanmak
Previous Message N. Can KIRIK 2024-09-20 19:01:15 Re: 3 tablo arasındaki join işleminde koşul kullanmak