Hər kəsə salam. MySQL sorğuya aid sualım var.
Deməli belə, aşağıda 2 cədvəl qeyd etmişəm.
2 | `id` int(11) NOT NULL auto_increment, |
3 | `site_url` varchar(100) NOT NULL, |
9 | `id` int(11) NOT NULL auto_increment, |
10 | `site_id` int(11) NOT NULL default '0', |
11 | `user_id` int(11) NOT NULL default '0', |
Birinci cədvəldə saytların ünvanları olacaq.
İkinci cədvəldə, hər bir istifadəçinin hansı sayta səs verməsi haqqda məlumatlar əlavə ediləcək.
Sualım belədir, necə etmək olar ki, 1 və ya 2 mysql sorğu ilə 2-ci cədvələ əsasən istifadəçinin
1-ci cədvəldə olan saytlardan hansına səs verməyibsə onları emal etsin.
Misalçün 1-ci cədvəldə 20 sayt var, onların 5-nə İD nömrəsi 1 olan, 10-na İD nömrəsi 2 olan, 15-nə İD nömrəsi 3 və s. olan
istifadəçilər səs verib. Belə olduqda yerdə qalan səs verilməyən saytların siyahısı hər bir istifadəçi üçün göstərilsin.
Cavablar`ınızı gözləyəcəm. Təşəkkür!
Verilmiş cavablar və yazılan şərhlər (5 cavab var)
0
Ola bilər hər hansı sətirin Tipini də düz qeyd etməmişəm, bunu da nəzərə almanızı istərdim!
4
1
select * from sites s
2
where s.id not in (
3
select site_id from votes where user_id=p_user_id
4
)
5
Bu variant daha sürətli işləyəcək:
1
select * from sites s
2
where not exists (
3
select 1
4
from votes v
5
where v.site_id=s.site_id and v.user_id=p_user_id
6
)
p_user_id – sizin user id parametridir.
1
İmkan olsaydı +10 verərdim. Əla cavab oldu!
Minnətdaram, çox kömək etmiş oldunuz. Allah razı olsun.
1
Buyurun, xoşdur
Sual verin
Cavab verin