Karmaşık Sorgular
Her zaman kullanılmayan ancak elzem olan sorgular...
İki ayrı tablonuz olduğunu farz edelim. Bunlardan birincisi Grup Adlarını tutsun. İkinciside O gruplara ait içerikleri barındırıyor olsun. Böyle bir durumda tek sorguyla bir VIEW yaratıp Grup Adları altında o gruba ait kaçar tane içerik olduğunu sürekli canlı tutabiliriz. Böylece uzun soygu ve kayıtlarla uğraşmak zorunda kalmayız.
CREATE VIEW icerik_grup_istatistik AS SELECT baslik, (SELECT COUNT(*) FROM icerik WHERE gno=icerik_grup.no) FROM icerik_grup
Yukardaki gibi oluşturduğumuz bir view (görüntü) sayesinde bir tablomuz sürekli güncel verileri içerecektir.
İç içe sorgu:
UPDATE `proje_grup` SET `proje_sayisi`=(SELECT COUNT(*) FROM proje WHERE pgno=icerik_grup.no)
SELECT * FROM `AramaDuzeltmesiGrubu` WHERE no NOT IN (SELECT DISTINCT GrupNo FROM AramaDuzeltmesi)
SELECT * FROM `AramaDuzeltmesiGrubu` WHERE no NOT IN (SELECT DISTINCT GrupNo FROM AramaDuzeltmesi)
if kullanımı
UPDATE vitrin SET yayin = IF(yayin = 1, NULL, 1) WHERE no='169'
zaman
AND tar>DATE_ADD(NOW(), INTERVAL -1 HOUR)
Şartlara göre belirlenen bir tabloyu silmek
DELETE FROM `departmandaki_urunler_alternatifler_grubu` WHERE no NOT IN (SELECT DISTINCT GrupNo FROM departmandaki_urunler_alternatifler)
Birden fazla olan kayıtları listeler
SELECT * FROM _guvenlik_bayi_giris GROUP BY kuki HAVING count(*) >= 2
SELECT * FROM _guvenlik_bayi_giris GROUP BY kuki HAVING count(*) >= 2 AND tar>'2017-02-09'
SELECT * FROM _guvenlik_bayi_giris GROUP BY kuki HAVING count(*) >= 2 AND tar>'2017-02-09'
SELECT foto_grup.no, foto_grup.baslik, foto.aciklama, foto.resimyol, foto.foto FROM `foto_grup` LEFT JOIN foto ON (foto.gno=foto_grup.no) GROUP BY foto_grup.no ORDER BY foto_grup.sira
SELECT * FROM article WHERE article_title IN (SELECT * FROM (SELECT article_title FROM article GROUP BY article_title HAVING COUNT(article_title) > 1) AS a);
SELECT foto_grup.no, foto_grup.baslik, Lfoto.aciklama, Lfoto.resimyol, Lfoto.foto FROM `foto_grup` LEFT JOIN (SELECT * FROM foto ORDER BY sira DESC) AS Lfoto ON (Lfoto.gno=foto_grup.no) GROUP BY foto_grup.no ORDER BY foto_grup.sira
SELECT ArabaMarka.Marka, ArabaModel.ModelAd AS Model, plasiyer.ad_soyad AS Teknisyeni, Firmalar.ad_soyad AS Firma, IslemKaydi.*, Resimler.resim FROM IslemKaydi LEFT JOIN ArabaMarka ON (IslemKaydi.AracMarka=ArabaMarka.no) LEFT JOIN ArabaModel ON (IslemKaydi.AracModel=ArabaModel.no) LEFT JOIN plasiyer ON (IslemKaydi.Teknisyen=plasiyer.no) LEFT JOIN Firmalar ON (IslemKaydi.IsYapilanFirma=Firmalar.no) LEFT JOIN (SELECT * FROM resimler WHERE tb='arac' GROUP BY tn) AS Resimler ON (IslemKaydi.no=Resimler.tn) ORDER BY no DESC
SELECT Ip FROM (SELECT Ip FROM GoogleTiklama WHERE Id=1 ORDER BY no DESC LIMIT 2) AS Sonuc GROUP BY Sonuc.Ip
SELECT * FROM `GoogleTiklama` WHERE Id=1 AND (Tarih BETWEEN '2018-07-01 00:00:00' AND '2018-07-01 23:59:59')
SELECT COUNT(*) AS Tiklanma, Ip FROM (SELECT Ip FROM GoogleTiklama WHERE Id='{$Fi['id']}' AND Tarih>DATE_ADD(NOW(), INTERVAL -7 DAY)) AS Sonuc GROUP BY Sonuc.Ip HAVING COUNT(*)>1
SELECT * FROM article WHERE article_title IN (SELECT * FROM (SELECT article_title FROM article GROUP BY article_title HAVING COUNT(article_title) > 1) AS a);
SELECT foto_grup.no, foto_grup.baslik, Lfoto.aciklama, Lfoto.resimyol, Lfoto.foto FROM `foto_grup` LEFT JOIN (SELECT * FROM foto ORDER BY sira DESC) AS Lfoto ON (Lfoto.gno=foto_grup.no) GROUP BY foto_grup.no ORDER BY foto_grup.sira
SELECT ArabaMarka.Marka, ArabaModel.ModelAd AS Model, plasiyer.ad_soyad AS Teknisyeni, Firmalar.ad_soyad AS Firma, IslemKaydi.*, Resimler.resim FROM IslemKaydi LEFT JOIN ArabaMarka ON (IslemKaydi.AracMarka=ArabaMarka.no) LEFT JOIN ArabaModel ON (IslemKaydi.AracModel=ArabaModel.no) LEFT JOIN plasiyer ON (IslemKaydi.Teknisyen=plasiyer.no) LEFT JOIN Firmalar ON (IslemKaydi.IsYapilanFirma=Firmalar.no) LEFT JOIN (SELECT * FROM resimler WHERE tb='arac' GROUP BY tn) AS Resimler ON (IslemKaydi.no=Resimler.tn) ORDER BY no DESC
SELECT Ip FROM (SELECT Ip FROM GoogleTiklama WHERE Id=1 ORDER BY no DESC LIMIT 2) AS Sonuc GROUP BY Sonuc.Ip
SELECT * FROM `GoogleTiklama` WHERE Id=1 AND (Tarih BETWEEN '2018-07-01 00:00:00' AND '2018-07-01 23:59:59')
SELECT COUNT(*) AS Tiklanma, Ip FROM (SELECT Ip FROM GoogleTiklama WHERE Id='{$Fi['id']}' AND Tarih>DATE_ADD(NOW(), INTERVAL -7 DAY)) AS Sonuc GROUP BY Sonuc.Ip HAVING COUNT(*)>1
Kaynaklar
Yorumunuzu Ekleyin