[]

Inner Join sorusu

sorgu daha uzun olsa da sadeleştirip özet geçeceğim.

ürün tablosu ve stok tablosu var.
sitede arama yapılacak. ve sorgu şu şekilde çalışacak:
ürünler tablosundaki arama kelimesiyle eşleşen satırları bul, bu satırlardaki barkodu bir stoklar tablosunda sorgulayıp kaç adet olduğunu bul.

stok listesinde adı olmaya da bilir ki sorunu bu çıkarıyor. şimdi bunu şu şekilde sorguluyorum:

SELECT k.barkod, k.urun FROM urunler AS k
INNER JOIN stok as st on st.barkod=k.barkod
where urun='.$arama.'

ancak anladığım kadarıyla bu sorgu şu anlama geliyor: arama yaptığın kelimeyle eşleşen barkodları stoklarda sorgula. ve stoklarda da eşleşenleri bastır. stoklarda bulunamayanları bastırma.

bu da haliyle, benim istediğim şey değil çünkü stokta olmayan ürünü hiçbir şekilde göstermiyor.

ben istiyorum ki:

a ürünü stokta 2 adet var
b ürünü stokta 0 adet var
c ürünü stokta 1 adet var

şeklinde sonuç versin.

not: ürünler tablosunda "stok" isimli ek bir sütun açamam, çünkü dediğim gibi kod esasında biraz daha karmaşık ve ben özet geçtim. benim bunu bu şekilde halletmem gerekiyor.

 
Yazdıklarınızı tam okumadım ama, www.devaffair.com şunlara bir bakın.


  • mylord  (15.05.14 11:38:59) 
ürüne ait stoklar tablosunda ürünle ilgili hiç veri yoksa sonuç döndürmeyecektir. daha önce girdi yapıldıysa stok 0 olsa bile dönecek çünkü bu query'de onla ilgili bir kontrol yok.

stoklar tablosuna o ürünle ilgili daha önce hiç veri girilmediyse inner join yerine left join kullanılabilir (örnek query için), böylece sonuç dönecek ama stok tablosundaki sütunlar null gelecektir.
  • tuyra  (15.05.14 11:42:47 ~ 11:43:21) 
@tull hah tamamdır çok teşekkürler. aradığım demek left join.

çalışayım
  • tchuck  (15.05.14 11:55:46) 
şu şekilde de yapabilirsin
select k.barkod,k.urun,
(select sum(stok) from stok s where s.barkod=k.barkod) adet
from urunler k
where urun='.$arama.'
  • €xpolerer  (15.05.14 12:02:27) 
stokta olup da ürünler tablosunda olmayanları da görmek istiyorsan full outer join de yapabilirsin. bu haliyle ürün tablosuna stok tablosuna ekliyor sadece.


  • esenboga  (15.05.14 12:42:02) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.