sql özürlü şahsımın yapmak istediği şey şu şekilde:

şimdi 2 tablo olacak biri isim, id ve içerik sayısından oluşuyor, öteki de içeriklerin bulunduğu tablo, üst tablonun idsi ve başka bir tablonun eleman idsinden oluşuyor, yani iki tane int.

tablo master : int id, string isim, int içeriksayisi
tablo slave : int master, int içerik

şimdi yapmak istediğim şey bu slave'den or ile içerik sorgulatmak "select master from slave where içerik = 1 or içerik = 5" şeklinde. ardından çıkan sonuçlarda masterlardan içerik sayısına göre yeteri kadar olup olmadığını bulmak.

yani master'ın içerik sayısı 5 diyorsa atıyorum bu sorgumda 5 tane master çıktıysa ben onu ayrı muameleye alacağım. bunu mümkün oldukça query'de yapmak için nasıl bir yol izlemem gerekir? saygılar.

 

tam da anlayamadı maslında sorunu ama bi de şöyle yazmayı dene:
select master from slave where içerik like(1,5)
1'le 5'i tırnak içinde de yazmak gerekebilir.

geçti gerçi de ben burda like yerine in yazıcaktım aslında yanlış yazmışım. neyse.

tepedeki psychedelic adam

bana şu şekilde sonuç çıkarsa negzel olur mesela:

(order by çıkan sayı/toplam sayı)
- master id, çıkan sayı, toplam sayı, çıkan sayı/toplam sayı

yuto

@tepedeki
bu ilk query'den sonra çıkan sonuçları ve sayılarını bir çıktı olarak almak istiyorum böyle bi query var mıdır?

yuto

soyle bisey olabilir, denemek lazim;

select m.id, m.icerik_sayisi, count(*) as slave_icerik_sayisi
from master m, slave s where m.id = s.master_id
group by m.id, m.icerik_sayisi
having m.icerik_sayisi <> count(*)

nawres

@nawres

select m.id, m.icerik_sayisi, count(*) as slave_icerik_sayisi
from master m, slave s where s.icerik = 1 AND m.id = s.master_id
group by m.id, m.icerik_sayisi
having m.icerik_sayisi <> count(*)

şeklinde sonuç alıyorum fakat

select m.id, m.icerik_sayisi, count(*) as slave_icerik_sayisi
from master m, slave s where (s.icerik = 1 OR s.icerik = 2) AND m.id = s.master_id
group by m.id, m.icerik_sayisi
having m.icerik_sayisi <> count(*)

şeklinde alamıyorum, fakat or s.icerik = 3 girersem sonuç geliyor yine :/
slave'de sadece 1 ve 2 var, 3 yok.

yuto

ben ordaki icerik = 1 or icerik = 5 kismin hic gormedim ilk baktigimda :)

sonuc alamiorum derken, sorgu hata mi veriyor?

s.icerk'i de group by'a eklersen istedigin olur gibi, emin olamadim. soyle bi denesene;

select m.id, m.icerik_sayisi, s.icerik, count(*) as slave_icerik_sayisi
from master m, slave s where m.id = s.master_id and (s.icerik = 1 OR s.icerik = 2)
group by m.id, m.icerik_sayisi, s.icerik
having m.icerik_sayisi <> count(*)

nawres
1

mobil görünümden çık