Arama butonu
Bu konudaki kullanıcılar: 1 misafir
9
Cevap
460
Tıklama
0
Öne Çıkarma
Php Verileri Guruplayıp Eksikleri Bulma
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

Merhabalar,
Şöyle bir sorunum var. database de iller diye bir kaydım var içinde binlerce defa farklı illerimiz kayıtlı.
Ben öncelikle bu illerden 1 er adet çekmek istiyorum bunu da GROUP By ile yapıyorum. (Toplam da 74 tane ili çekiyorum.)
Ama bu illerin arasında eksik olan 7 ili buldurup bunların hiç kaydı olmadığını yazdırmak istiyorum.
Bunu nasıl yapabilirim.

Teşekkür ederim.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



S
11 yıl (53 mesaj)
Onbaşı

81 ilin kaytılı olduğu tablo ile group by ile elde ettiğin sonuçları karşılaştırman gerekiyor. SQL olarak şu şekilde : "SELECT il_adi FROM iller WHERE il_adi NOT IN (SELECT il_adi FROM ikincil_tablo GROUP BY il_adi)"


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @valid20
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: soruuken

81 ilin kaytılı olduğu tablo ile group by ile elde ettiğin sonuçları karşılaştırman gerekiyor. SQL olarak şu şekilde : "SELECT il_adi FROM iller WHERE il_adi NOT IN (SELECT il_adi FROM ikincil_tablo GROUP BY il_adi)"


Dediğiniz şekilde yaptım ama maalesef olmadı kodları aşağıya yazıyorum.

TABLO 1
illerimiz
iller (81 İl bunun içinde bulunuyor.)


TABLO 2
hazurun
ili (içinde binlerce il adı mevcut)



Almak istediğim çıktı şu şekilde
Adana = KAYITLI
Adıyaman = KAYITLI
Afyon = KAYDI YOK
Ağrı = KAYITLI
...
...
...


Şeklinde

@soruuken sizin dediğiniz şekilde yaptım ama herhangi bir çıktı alamadım.

$sql = "SELECT ili from hazurun WHERE ili NOT IN (SELECT iller FROM illerimiz GROUP BY iller)";
$sor =mysql_query($sql);
while ($dizi=mysql_fetch_array($sor)){
echo $dizi["ili"];
}





< Bu mesaj bu kişi tarafından değiştirildi valid20 -- 18 Haziran 2015; 13:26:19 >
Bu mesaja 1 cevap geldi.
S
11 yıl (53 mesaj)
Onbaşı

Tabloları ters yazmışsın. Senin şuanki sql sorgun hazurun tablosundaki her satırının, il kolonundaki verisini, illerimiz tablosunda aratır, eşleşmeyeni bulur.

hazurun tablosu il bilgilerini illerimiz tablosundan aldığı için eşleşmeyen bir veri olamaz.boş sonuç döner.

Sorgun şöyle olmalı : " SELECT iller FROM illerimiz WHERE iller NOT IN ( SELECT ili FROM hazurun GROUP BY ili) "





< Bu mesaj bu kişi tarafından değiştirildi soruuken -- 18 Haziran 2015; 15:18:49 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @valid20
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: soruuken

Tabloları ters yazmışsın. Senin şuanki sql sorgun hazurun tablosundaki her satırının, il kolonundaki verisini, illerimiz tablosunda aratır, eşleşmeyeni bulur.

hazurun tablosu il bilgilerini illerimiz tablosundan aldığı için eşleşmeyen bir veri olamaz.boş sonuç döner.

Sorgun şöyle olmalı : " SELECT iller FROM illerimiz WHERE iller NOT IN ( SELECT ili FROM hazurun GROUP BY ili) "


Teşekkür ederim çalıştı ama sadece olmayan illeri yazdı.
Oysaki ben 81 ili yazdırıp yanlarına var veya yok yazmasını istiyordum


Bu mesaja 1 cevap geldi.
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

Başka bir forumdaki arkadaşın yardımları sayesinde yaptım. İşte çalışan kodlar


quote:

$no=0;
$sql = "select illerimiz.iller, if (hazurun.ili is null, 'YOK', 'VAR') AS kayit from illerimiz LEFT OUTER JOIN hazurun ON hazurun.ili=illerimiz.iller GROUP BY iller";
$sor =mysql_query($sql);
while ($dizi=mysql_fetch_array($sor)){
$no++;
echo $no." - ".$dizi["iller"]." = ".$dizi["kayit"]."<br>";





< Bu mesaj bu kişi tarafından değiştirildi valid20 -- 22 Haziran 2015; 16:32:11 >
Bu mesaja 1 cevap geldi.
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

where hazurun.aktif in ('1')


Bu kodu aşağıdaki kodun neresine eklediysem hata verdi nereye eklemem gerek?.
 
$no=0;
$sql = "select illerimiz.iller, if (hazurun.ili is null, 'ÜYEMİZ DEĞİL', 'ÜYE') AS kayit from illerimiz LEFT OUTER JOIN hazurun ON hazurun.ili=illerimiz.iller GROUP BY iller";
$sor =mysql_query($sql);
while ($dizi=mysql_fetch_array($sor)){
$no++;
echo $no." - ".$dizi["iller"]." = ".$dizi["kayit"]."<br>";
}


Bu mesaja 1 cevap geldi.
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

A
11 yıl (500 mesaj)
Yüzbaşı

GROUP BY iller den hemen önce eklermisin

olmazsa from illerimiz den sonra dene


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @valid20
V
11 yıl (101 mesaj)
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: aksoydesign

GROUP BY iller den hemen önce eklermisin

olmazsa from illerimiz den sonra dene



üzgünüm olmadı...



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.