tumkayitda recid ve login kayitlari var. bireysel de -> uid , name,lname,city kurumsalda -> uid,name,lname,firm,city
bireyselin ve kurumsalın uid leri tumkayit tablosunda recid olarak tutuluyor yani öyle bir şey yapılmışki ben bireyseldeki bir kullanıcının loginini ancak bireyselde veya kurumsalda uidiyi tumkayitda recid ye eşitleyerek bulabilirim.
benim günlerdir uğraştığım ve beceremediğim sorgu şu
örnek olarak logini ab ile başlayacak (like 'ab%' kullandım) çek ve bunların recid si bireysel veya kurumsalda uid karşılığı varsa bul ve ona göre eşitse tumkayitdan login, bireyselde ise , name,lname,city kurumsalda ise name,lname,firm,city değerlerini çek.
umarım düzgün anlatmışımdır
tşkler
öncelikle; select recid from tumkayit where login like 'ab%' ile recid leri cekip notepade kaydet. (çok uzunsa bu selecti tablo yaratarak da kaydedebilirsin.):
create table as select recid from tumkayit where login like 'ab%' commit;
daha sonra,
select * from bireysel a, kurumsal b where a.uid=b.uid and a.uid in (...buraya ilk select'te cektiğin recidleri yazacaksın)
buradan sonra aynı selecti
select a.uid from bireysel a, kurumsal b where a.uid=b.uid and a.uid in (...buraya ilk select'te cektiğin recidleri yazacaksın)
şeklinde yazıp aldıgın uid leri
select * from tumkayit where recid in (bir usttekı selectten cektıgın uidleri yazacaksın)
şeklinde yazarsan son ve sondan 2 oncekı selectle ıstedıklerını alırsın
quote:
Orjinalden alıntı: Paus3Break
öncelikle; select recid from tumkayit where login like 'ab%' ile recid leri cekip notepade kaydet. (çok uzunsa bu selecti tablo yaratarak da kaydedebilirsin.):
create table as select recid from tumkayit where login like 'ab%' commit;
tablo yaratmam şartmı mysql üzerinde çalışıyorum
/*isim tüm query lerde kullanılacak parametre sen istersen bunu storeprocedure üsründe bir */ DECLARE @NAME AS NVARCHAR(50) SET @NAME = 'b1'
/*sayı değerleri hangi tabloda kayıt olduğunu buluyor*/ DECLARE @COUNTKURUMSAL AS INT DECLARE @COUNTBIREYSEL AS INT
SELECT @COUNTKURUMSAL = COUNT(*) FROM tumkayit INNER JOIN kurumsal ON tumkayit.recid = kurumsal.uidk WHERE kurumsal.name LIKE @NAME+'%'
SELECT @COUNTBIREYSEL = COUNT(*) FROM tumkayit INNER JOIN bireysel ON tumkayit.recid = bireysel.uid WHERE bireysel.name LIKE @NAME+'%'
/*bulunan değerlere göre kurumsaldan veya bireyselden fieldlar geliyor*/ IF @COUNTKURUMSAL>0 AND @COUNTBIREYSEL = 0 BEGIN SELECT name, lname, fcode, city FROM kurumsal WHERE name LIKE @NAME+'%' END IF @COUNTKURUMSAL=0 AND @COUNTBIREYSEL > 0 BEGIN SELECT name, lname, city FROM bireysel WHERE name LIKE @NAME+'%' END
quote:
Orjinalden alıntı: mskocabay
quote:
Orjinalden alıntı: Paus3Break
öncelikle; select recid from tumkayit where login like 'ab%' ile recid leri cekip notepade kaydet. (çok uzunsa bu selecti tablo yaratarak da kaydedebilirsin.):
create table as select recid from tumkayit where login like 'ab%' commit;
tablo yaratmam şartmı mysql üzerinde çalışıyorum
yok sart degıl.
arkadaşlar çok sağolun ama soruyu tam okumamışsınız galiba ben de üç tablo var şöyle düşünün tumkayitlarda sadece ueyelerin login ve password gibi bilgileri bireysel de ise kulanıcı bilgileri ad,soyad,tel falan eğer kullanıcı kurumsal ise kurumsal tablosunda yazıyor kullanıcı bilgileri ad,soyad,tel vb...
benim yapamadığım şu formdan kullanıcı adı ile arama yaptığımda bana o kullanıcı adı bireysel tablounda veya kurumsal da olsun bilgilerini çekmek.
tablolar arasındaki bağlantı şu tumkayitlarda recid alanı, bireyseldeki veya kurumsaldaki uid alanını tutuyor
hocam ılk yazdıgın mesaja gore verdıgım cevap anlattıklarını karsılıyor. neresı yanlıs ya da neresını anlamadın ogrenebılır mıyım?
Ya da şöyle gidelim:
BİREYSEL ve KURUMSAL tablolarındaki uid kolonları aynı. tek bir select ile bu iki kolundan tüm verileri getirelim öncelikle:
select * from bireysel a, kurumsal b where a.uid=b.uid
Bu selecteki uidleri almak istersek:
select a.uid from bireysel a, kurumsal b where a.uid=b.uid
Bu select sonucunda diyelim ki 4 tane kayıt geldi. Gelen kayıtlar da (yani uidler de) 5,7,9, 56 olsun.
O zaman tümkayit tablosunda bu uidere karsılık gelen kayıtlar varmı yok mu ona bakarız:
select * from tumkayit where recid in (75,7,9,56)
bu selecetin sonucu boş gelmezse istedigin verileri buradan alırsın. yok boşsa zaten tum kayıtlar ile bıreysel ve kurumsal tablosu uysmuyordur.
hocam çok sağol hemen deneyeceğim
denemenın sonucunu buraya yazarsan sevınırım.
hocam bir şeye daha takıldım
quote:
Orjinalden alıntı: Paus3Break
select a.uid from bireysel a, kurumsal b where a.uid=b.uid
Bu select sonucunda diyelim ki 4 tane kayıt geldi. Gelen kayıtlar da (yani uidler de) 5,7,9, 56 olsun.
O zaman tümkayit tablosunda bu uidere karsılık gelen kayıtlar varmı yok mu ona bakarız:
select * from tumkayit where recid in (75,7,9,56)
burda gelen kayıtları yani select a.uid from bireysel a, kurumsal b where a.uid=b.uid şu satırdan gelen kayıtları bir değişkene atayıp select * from tumkayit where recid in (75,7,9,56) bu sorguda (75,7,9,56) yerine kullanabilirmiyiz
quote:
Orjinalden alıntı: mskocabay
hocam bir şeye daha takıldım
quote:
Orjinalden alıntı: Paus3Break
select a.uid from bireysel a, kurumsal b where a.uid=b.uid
Bu select sonucunda diyelim ki 4 tane kayıt geldi. Gelen kayıtlar da (yani uidler de) 5,7,9, 56 olsun.
O zaman tümkayit tablosunda bu uidere karsılık gelen kayıtlar varmı yok mu ona bakarız:
select * from tumkayit where recid in (75,7,9,56)
burda gelen kayıtları yani select a.uid from bireysel a, kurumsal b where a.uid=b.uid şu satırdan gelen kayıtları bir değişkene atayıp select * from tumkayit where recid in (75,7,9,56) bu sorguda (75,7,9,56) yerine kullanabilirmiyiz
şöyle yapabilirsin:
select * from tumkayit where recid in (select a.uid from bireysel a, kurumsal b where a.uid=b.uid)
poly_users --->login ve passwd polsy_instution--->uid,fname,lname,city,firm poly_user_individual--->uid,fname,lname,city
eger id leri eşit olanları bulup poly_users tablosundaki tum bilgileri cekmek istiyorsan:
select * from poly_users where rec_id in (select a.uid from poly_instution a, poly_user_individual b where a.uid=b.uid)
eger idleri eşit olanları bulup poly_inst ve poly_indivi tablosundaki tüm kayıtları çekmek istiyorsan:
select * from poly_instution a, poly_user_individual b where a.uid=b.uid and a.uid in (select rec_id from poly_users)
logine göre arama yapmak istiyorsan öncelıkle poly_instutin ve poly_user_indiv tablolarını birleştirmen gerek:
create table TABLO_YENI as select * from poly_instution a, poly_user_individual b where a.uid=b.uid commit;
***artık yeni bir tablon var (TABLO YENI) bu yeni, tablodaki uid alanı ile poly_users tablosundaki recid alanları aynı. Bundan sonra yapman gereken:
select * from poly_users a, TABLO_YENI b where a.rec_id=b.u_id and a.login like '%xxx%'
sanırım şimdi oldu.
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme