iki tablodan şarta göre sorgu

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

iki tablodan şarta göre sorgu

Mesaj gönderen Kaptan »

Selamlar.
ürün isminde bir tablom var ve içerisinde id,adi,kodu gibi alanlar var.
ürünresim isminde de bir tablom var ve bunun içerisinde urunid,resim alanları var.

ürün
id=1
adi=telefon

ürünresim
urunid=1
resim=deneme.jpg

gibi kayıtlar ekliyorum. ürünresim tablosundaki urunidsinden hangi ürüne kayıtlı olduğu bulunabiliyor.
Ben resmi olmayan ürünleri göstermek istiyorum.
select * from urun,urunresim where urun.id=urunresim.urunid dediğimde sadece resmi olan ürünleri gösteriyor fakat resmi olmayan ürünlerin sql kodunu yazamadım. Sql kodunda yardımcı olur musunuz? Teşekkürler.

Not: urun.id<>urunresim.urunid dediğimde olmuyor.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

veri tabanı olarak ne kullanıyorsunuz ??

Kod: Tümünü seç


select * from urun
left outer join urunresim on urun.id=urunresim.urunid

yada

Kod: Tümünü seç


select * from urunresim 
left outer join urun  on urun.id=urunresim.urunid


bunlardan birisi bu işi yapıodu ama hangisi seçemedim şimdi
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

Merhaba. cevabınız için teşekkürler.
ilk sorguda bütün kayıtları gösterdi. resmi olan ve olmayan.
ikinci kayıtta ise sadece resmi olanları gösterdi.
Bana resmi olmayanlar lazım.
Bu kodu bir asp sayfasında kullanmam gerekiyor. Veritabanı da access.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

tamam o zaman ikisinin birleşimi senin işini görür.

Kod: Tümünü seç


select * from urun
left outer join urunresim on urun.id=urunresim.urunid 
and urun.id not in ( select urun.id from urunresim
left outer join urun  on urun.id=urunresim.urunid )

Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

unicorn64 yazdı:tamam o zaman ikisinin birleşimi senin işini görür.

Kod: Tümünü seç


select * from urun
left outer join urunresim on urun.id=urunresim.urunid 
and urun.id not in ( select urun.id from urunresim
left outer join urun  on urun.id=urunresim.urunid )

teşekkürler. fakat sql kodlarında hata veriyor. Biraz kurcalayayım dedim ama yok. zaten kodu görünce afallamıştım:). urun.id=urunresim.urunid kısmına geliyor ve sözdizimi hatası diyor.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

veri tabanı access dediğinizi farketmemişim.
şimdi access de örneğinize uygun olarak urun ve urunresim tabloları olusturdum

urun tablosunda

Kod: Tümünü seç

id | urunadi | urunkodu 
1  | urun 1  | urun1
2  | urun 3  | urun3
alanları var

urunresimde ise

Kod: Tümünü seç

urunid |  resim
      1|  urun1.jpg 
var

sonra sorgular böümünden yeni yi seçtim ve açılan pencereden
"Eşleşmeyenleri bul sorgu sihirbazı" nı açtım. bu sihirbazı uyguladıktan sonra karşıma

Kod: Tümünü seç

SELECT urun.id, urun.adi, urun.kodu
FROM urun LEFT JOIN urunresim ON urun.id = urunresim.urunid
WHERE (((urunresim.urunid) Is Null));
kodu çıktı. sorguyu çalıştırdım ve urunresim tablosuna veri girmediğim urun2 ile ilgili sonuç geldi. sanırım bu sefer doğru sonucu aldık :)
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

Hocam allah razı olsun. Çok teşekkür ederim. Bu sefer oldu. Kolay gelsin.
Cevapla