Tablo Karşılaştırma
Tablo Karşılaştırma
Arkadaşlar merhabalar.
Uzun zaman sonra foruma ilk sorumu soruyorum içinden çıkamadım. Biraz uzak kaldım da programlama işinden.
Aslında bu bölümde sorulan son soruya çok benziyor soru.
İki tablom var. Tablolar arasında ilişki kurulabilecek bir alan mevcut değil.
tarihler ve personel adlarında
Tarihler
INT TARIH
1 01.01.2015
2 02.01.2015
3 03.01.2015
4 04.01.2015
5 05.01.2015
6 06.01.2015
7 07.01.2015
8 08.01.2015
9 09.01.2015
10 10.01.2015
Personel
INT ADI TARİH
1 ASE 01.01.2015
2 HASAN 01.01.2015
3 HÜSEYİN 02.01.2015
4 ASE 03.01.2015
5 HASAN 03.01.2015
6 HÜSEYİN 06.01.2015
7 ASE 07.01.2015
8 HASAN 07.01.2015
9 HÜSEYİN 07.01.2015
10 ASE 08.01.2015
Burada bir karşılaştırma yaparak birinci tabloda olan fakat iKinci tabloda olmayan kayıtları almak istiyorum
çıktı
ADI TARIH
ASE 02.02.2015
ASE 04.01.2015
ASE 05.01.2015
ASE 06.01.2015
yardımlarınızı bekliyorum.
Kolay gelsin.
Uzun zaman sonra foruma ilk sorumu soruyorum içinden çıkamadım. Biraz uzak kaldım da programlama işinden.
Aslında bu bölümde sorulan son soruya çok benziyor soru.
İki tablom var. Tablolar arasında ilişki kurulabilecek bir alan mevcut değil.
tarihler ve personel adlarında
Tarihler
INT TARIH
1 01.01.2015
2 02.01.2015
3 03.01.2015
4 04.01.2015
5 05.01.2015
6 06.01.2015
7 07.01.2015
8 08.01.2015
9 09.01.2015
10 10.01.2015
Personel
INT ADI TARİH
1 ASE 01.01.2015
2 HASAN 01.01.2015
3 HÜSEYİN 02.01.2015
4 ASE 03.01.2015
5 HASAN 03.01.2015
6 HÜSEYİN 06.01.2015
7 ASE 07.01.2015
8 HASAN 07.01.2015
9 HÜSEYİN 07.01.2015
10 ASE 08.01.2015
Burada bir karşılaştırma yaparak birinci tabloda olan fakat iKinci tabloda olmayan kayıtları almak istiyorum
çıktı
ADI TARIH
ASE 02.02.2015
ASE 04.01.2015
ASE 05.01.2015
ASE 06.01.2015
yardımlarınızı bekliyorum.
Kolay gelsin.
En son ASE tarafından 03 Oca 2016 10:47 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: Tablo Karşılaştırma
Abi bu ara yoğunum. İlk firsatta ilgilencem seninle
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Tablo Karşılaştırma
Olsun forumdan gelir bana cevap.
İnancım sonsuz.
Burda hiçbir sorum cevapsız kalmadı şimdiye kadar.
İnancım sonsuz.
Burda hiçbir sorum cevapsız kalmadı şimdiye kadar.
Re: Tablo Karşılaştırma
http://www.yazilimmutfagi.com/10094/ver ... lmasi.aspx
Abi bu adreste istediğin gibi bi örnek var. Bi incele istersen
Abi bu adreste istediğin gibi bi örnek var. Bi incele istersen
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Tablo Karşılaştırma
Baktım baktım. Soruyu buraya sormamak için 1 haftadır uğraşıyorum zaten. İnternetteki bütün örnekleri inceledim. Oturup venn şemaları çizdim. Viewler oluşturdum ama işin içinden çıkamadım. Hayırlısı bakalım.
Tablolar ilişkili olmayınca hepsi boşta kalıyor. Birde isimleri ve tarih aralığını süzme girince işin içine hepten karışıyor iş.
Tablolar ilişkili olmayınca hepsi boşta kalıyor. Birde isimleri ve tarih aralığını süzme girince işin içine hepten karışıyor iş.
-
- Üye
- Mesajlar: 254
- Kayıt: 16 Şub 2004 06:12
- Konum: istanbul
Re: Tablo Karşılaştırma
Merhaba,
Geçtiğimiz günlerde bana da gerekmişti, sağolsun bir arkadaşımız aşağıdaki sorguyu vermiş.
Geçtiğimiz günlerde bana da gerekmişti, sağolsun bir arkadaşımız aşağıdaki sorguyu vermiş.
Kod: Tümünü seç
select * from Atablosu left outer join Btablosu on Atablosu.Personel_id=Btablosu.Personel_id
Re: Tablo Karşılaştırma
Soruyu sorarken sizin konunuza atıf yapmıştım zaten. Bendeki sıkıntı iki tabloyu birbiriyle ilişkilendirecek bir alanın olmayışı.denizfatihi yazdı:Merhaba,
Geçtiğimiz günlerde bana da gerekmişti, sağolsun bir arkadaşımız aşağıdaki sorguyu vermiş.
Kod: Tümünü seç
select * from Atablosu left outer join Btablosu on Atablosu.Personel_id=Btablosu.Personel_id
Sağolun
Kolay gelsin
-
- Üye
- Mesajlar: 254
- Kayıt: 16 Şub 2004 06:12
- Konum: istanbul
Re: Tablo Karşılaştırma
Ben çalıştırırken A tablosunda tüm personelin var olduğunu sayıyorum B tablosunda ise var onları, sorgunun sonucunda A tablosunda ki tarih boş kalıyor ise B tablosunda yoktur gibi düşün.
Tarihleri baz al
Tarihleri baz al
Re: Tablo Karşılaştırma
Ben bütün Joiner exist ve not in komutlarını denedim ama istediğim çıktığı almayı başaramadım. Eğer mümkünse yukarıdaki alan adları vw verilerle örnek bir veritabanı oluşturup deneyebilir misiniz? Kusura bakmayın çok şey istiyorum ama bir haftadır internetteki bütün örnekleri inceledim ve denedim.denizfatihi yazdı:
Kolay gelsin.
En son ASE tarafından 04 Oca 2016 11:24 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
-
- Üye
- Mesajlar: 254
- Kayıt: 16 Şub 2004 06:12
- Konum: istanbul
Re: Tablo Karşılaştırma
Tablo createleri gönder yarın gün içinde test edeyim. Birde 3 veya 4 örnek satır
Re: Tablo Karşılaştırma
SQL Serverda oluşturduğum scripti aşağıda veriyorum.
Kolay gelsin.
Kolay gelsin.
Kod: Tümünü seç
CREATE TABLE [dbo].[tarihler] ([sira] int, [tarih] date)
CREATE TABLE [dbo].[Personel]([IND] [int], [TARIH] [date], [adi] [nvarchar](50))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (1, CAST(N'2015-01-15' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (2, CAST(N'2015-01-16' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (3, CAST(N'2015-01-19' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (4, CAST(N'2015-01-20' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (5, CAST(N'2015-01-21' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (6, CAST(N'2015-01-22' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (7, CAST(N'2015-01-23' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (8, CAST(N'2015-01-26' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (9, CAST(N'2015-01-27' AS Date))
INSERT [dbo].[tarihler] ([sira], [tarih]) VALUES (0, CAST(N'2015-01-28' AS Date))
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (1, CAST(N'2015-01-15' AS Date), N'MURAT BAL')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (2, CAST(N'2015-01-16' AS Date), N'YALÇIN KAYA')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (3, CAST(N'2015-01-19' AS Date), N'MURAT BAL')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (4, CAST(N'2015-01-20' AS Date), N'YALÇIN KAYA')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (5, CAST(N'2015-01-20' AS Date), N'MURAT BAL')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (6, CAST(N'2015-01-21' AS Date), N'NURHAN MUTLU')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (7, CAST(N'2015-01-23' AS Date), N'NURHAN MUTLU')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (8, CAST(N'2015-01-23' AS Date), N'YALÇIN KAYA')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (9, CAST(N'2015-01-27' AS Date), N'MURAT BAL')
INSERT [dbo].[PERSONEL] ([IND], [TARIH], [adi]) VALUES (10, CAST(N'2015-01-28' AS Date), N'MURAT BAL')
Re: Tablo Karşılaştırma
Merhaba,
İlk mesajda verdiğiniz örnekte sorun var.
- 06.01.2015 tarihi hem birinci, hem de ikinci tabloda olmasına rağmen çıktıda gösteriliyor.
- Çıktıda gösterilen ASE 02.02.2015 kaydı iki tabloda da yok (yazım yanlışı mı diye düşündüm, ama 02.01.2015 kaydı her iki tabloda da var.
Sizin sorunuza göre benim anladığım çıktıdaki sadece iki satırın doğru olduğu (aslında kısmen doğru, açıklaması aşağıda):
ASE 04.01.2015
ASE 05.01.2015
Bu karışıklığı giderdikten sonra anlamamız gereken bir iki şey daha var:
1. Eğer birinci tablo dediğiniz Tarihler tablosu ise, birinci tabloda olan, ama ikinci tabloda olmayan kayıtlarda biz "adi" alanını nasıl seçeceğiz. Sonuçta kayıt yok
2. Eğer birinci tablo Tarihler tablosu ise ve çıktıda Adi gerekmiyorsa o zaman aşağıdaki sorgu olayı basitçe çözüyor:
SELECT * FROM tarihler WHERE tarihler.tarih NOT IN (SELECT personel.TARIH FROM personel)
3. Eğer istediğiniz personelin, tarihler tablosunda olmayan kaydını bulmaksa bu iki tablodan sonuç çıkmaz. Bize yazmadığınız bir takım bilgiler olmalı. Örneğin her kişi için mutlaka bir tarih olacak, her kişi için bir tarihten sadece bir tane olacak, tarih tablosunda olmayan kayıt personel tablosunda da olmayacak vs. Bu veya buna benzer kurallardan bahsedecek olursanız o zaman sonuç çıkabilir.
Anladığım kadarıyla buradan çıkacak sonuç kodla toparlanacak. Bu da veri tabanı tasarımında bir sorun olduğu şüphesini uyandırıyor (örneklere göre normalizasyon bozuk, ama örnek olduğu için önemsemiyorum). Bu yüzden tasarımı gözden geçirmeniz iyi olacaktır.
Bence soruyu buraya biraz daha detaylı yazın ve örnekleri biraz daha güzel seçin.
İyi çalışmalar
İlk mesajda verdiğiniz örnekte sorun var.
- 06.01.2015 tarihi hem birinci, hem de ikinci tabloda olmasına rağmen çıktıda gösteriliyor.
- Çıktıda gösterilen ASE 02.02.2015 kaydı iki tabloda da yok (yazım yanlışı mı diye düşündüm, ama 02.01.2015 kaydı her iki tabloda da var.
Sizin sorunuza göre benim anladığım çıktıdaki sadece iki satırın doğru olduğu (aslında kısmen doğru, açıklaması aşağıda):
ASE 04.01.2015
ASE 05.01.2015
Bu karışıklığı giderdikten sonra anlamamız gereken bir iki şey daha var:
1. Eğer birinci tablo dediğiniz Tarihler tablosu ise, birinci tabloda olan, ama ikinci tabloda olmayan kayıtlarda biz "adi" alanını nasıl seçeceğiz. Sonuçta kayıt yok
2. Eğer birinci tablo Tarihler tablosu ise ve çıktıda Adi gerekmiyorsa o zaman aşağıdaki sorgu olayı basitçe çözüyor:
SELECT * FROM tarihler WHERE tarihler.tarih NOT IN (SELECT personel.TARIH FROM personel)
3. Eğer istediğiniz personelin, tarihler tablosunda olmayan kaydını bulmaksa bu iki tablodan sonuç çıkmaz. Bize yazmadığınız bir takım bilgiler olmalı. Örneğin her kişi için mutlaka bir tarih olacak, her kişi için bir tarihten sadece bir tane olacak, tarih tablosunda olmayan kayıt personel tablosunda da olmayacak vs. Bu veya buna benzer kurallardan bahsedecek olursanız o zaman sonuç çıkabilir.
Anladığım kadarıyla buradan çıkacak sonuç kodla toparlanacak. Bu da veri tabanı tasarımında bir sorun olduğu şüphesini uyandırıyor (örneklere göre normalizasyon bozuk, ama örnek olduğu için önemsemiyorum). Bu yüzden tasarımı gözden geçirmeniz iyi olacaktır.
Bence soruyu buraya biraz daha detaylı yazın ve örnekleri biraz daha güzel seçin.
İyi çalışmalar
-
- Üye
- Mesajlar: 254
- Kayıt: 16 Şub 2004 06:12
- Konum: istanbul
Re: Tablo Karşılaştırma
Benim sorgu biçimim
Kod: Tümünü seç
select A.SICILT,A.ADI_SOYADI,A.TARIH, B.SICIL, B.KULLATARIH from DENK_TURNIKE A
left outer join DENKIZINHAR B on B.SICIL=A.SICILT AND B.KULLATARIH=A.TARIH
order by 1
[code]