Php 2 Tablodan Veri Çekme Problemi

Kodla Büyü

valid20

Üye
Mesajlar
12
Merhabalar,
çok uğraştım ama sonunda yapamadım :)
2 tane tablom var. (illerimiz,hazurun)- resimleri ektedir.

*İllerimiz tablosunda 81 ilimiz mevcut.
--- iller

*Hazurun tablosunda

--- beladi
--- ili
--- ilce
--- bolge
--- belturu
--- aktif

* Bunlardan almak istediğim çıktı ekteki resimde görebilirsiniz.

* illerimiz.iller den tum iller çekilip hazurun.ili nde bulunan illerle eşitlenecek. (neden hazurun.ili kullanmıyorsun diyecek olursanız çünkü ondan tüm iller yok)
daha sonra hazurun.belturu ne göre her ilde kaç tane uye olduğu ilgili alana yazdırılacak.

* Bunu yaparkende hazurun.aktif="1" olma şartını arıyoruz.

Şimdiden teşekkür ediyorum
 

Ekli dosyalar

  • index.jpg
    index.jpg
    92.9 KB · Görüntüleme: 1,293
  • hazurun.jpg
    hazurun.jpg
    298.4 KB · Görüntüleme: 1,293
  • illerimiz.jpg
    illerimiz.jpg
    112.4 KB · Görüntüleme: 1,293
Hocam, cevap yazacağımda neye göre? Eğer yanılıyorsam arkadaşlar düzeltsinler. Veritabanı tasarımın yanlış, hatta ortada tasarım mı var emin değilim? Dolayısıyla istenilenin yapılamaması normal...
Eğer ilişkisel veritabanınızın ER modelinin görüntüsünü paylaşırsanız, kullanmanız gereken SQL cümleciği konusunda bende dahil olmak üzere yardımcı olacak çok arkadaş bulabilirsiniz. Ama şu haliyle ne sorunuz anlaşılır durumda ne de veritabanınız...
 
zulfikar1985' Alıntı:
Hocam, cevap yazacağımda neye göre? Eğer yanılıyorsam arkadaşlar düzeltsinler. Veritabanı tasarımın yanlış, hatta ortada tasarım mı var emin değilim? Dolayısıyla istenilenin yapılamaması normal...
Eğer ilişkisel veritabanınızın ER modelinin görüntüsünü paylaşırsanız, kullanmanız gereken SQL cümleciği konusunda bende dahil olmak üzere yardımcı olacak çok arkadaş bulabilirsiniz. Ama şu haliyle ne sorunuz anlaşılır durumda ne de veritabanınız...

Böyle demeseydin iyi olurdu, kendi çapımda birşeyler yapmaya çalışıyorum, tamam belki çok iyi değilim ama bir şeyler yapmaya çalışıyorum. Neyse canınız sağolsun vazgeçtim.

Herkese iyi bayramlar.
Selamlar
 
Hocam, ramazan haliyle incitici olmuşsa özür dilerim. Benim buradaki kastım daha açıklayıcı olmanız gerektiği idi... Hayırlı bayramlar...
 
SELECT * FOM iller LEFT JOIN
SELECT tur FROM
(
select ili, count( DISTINCT ili ) as tur from hazurun where belturu = 'Buyuksehir'
Union
select ili, count( DISTINCT ili ) as tur from hazurun where belturu = 'Ilce''
vs. vs.


) AS tabloTur

ON iller.ili = tablo_tur.ili

buna benze bi kodla çekip php de kontrol yapısı ile tabloya dökülebilir
 
mhmd' Alıntı:
SELECT * FOM iller LEFT JOIN
SELECT tur FROM
(
select ili, count( DISTINCT ili ) as tur from hazurun where belturu = 'Buyuksehir'
Union
select ili, count( DISTINCT ili ) as tur from hazurun where belturu = 'Ilce''
vs. vs.


) AS tabloTur

ON iller.ili = tablo_tur.ili

buna benze bi kodla çekip php de kontrol yapısı ile tabloya dökülebilir

Buraya kadar her şey normal çalışıyor yalnız buraya where hazurun.aktif in ('1') şartını eklemem gerekiyor sıkıntım burada.
teşekkür ederim.


Kod:
echo "

<body link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\" text=\"#FFFFFF\" bgcolor=\"#03747A\">

<div align=\"center\">
    <table border=\"5\" cellpadding=\"5\" cellspacing=\"5\" bordercolorlight=\"#FF0000\" bordercolordark=\"#FFFFFF\" bgcolor=\"#03747A\" height=\"186\">
        <tr>
            <td colspan=\"6\" align=\"center\" height=\"54\"><b><font color=\"#FFFFFF\" size=\"4\">HER 
            ILDE BULUNAN UYELIK TURLERI</font></b></td>
        </tr>
        <tr>
            <td align=\"center\" height=\"57\"><font size=\"4\" color=\"#FFFFFF\"><b>NO</b></font></td>
            <td align=\"center\" height=\"57\"><font size=\"4\" color=\"#FFFFFF\"><b>ILI</b></font></td>
            <td align=\"center\" height=\"57\"><font size=\"4\" color=\"#FFFFFF\"><b>BUYUKSEHIR</b></font></td>
            <td align=\"center\" height=\"57\"><font size=\"4\" color=\"#FFFFFF\"><b>IL</b></font></td>
            <td align=\"center\" height=\"57\"><font size=\"4\" color=\"#FFFFFF\"><b>ILCE</b></font></td>
            <td align=\"center\" height=\"57\"><font size=\"4\" color=\"#FFFFFF\"><b>BELDE</b></font></td>
        </tr>
    ";
    
$no                 =0;
$beldesayisi        =0;
$ilcesayisi         =0;
$ilsayisi           =0;
$buyuksehirsayisi   =0;

$sql="Select aktif,iller as ili, 
sum(case when (belturu='Il') then 1 else 0 end) as IlSayisi,
sum(case when (belturu='Ilce') then 1 else 0 end) as IlceSayisi,
sum(case when (belturu='Belde') then 1 else 0 end) as BeldeSayisi,
sum(case when (belturu='BuyukSehir') then 1 else 0 end) as BuyukSehirSayisi
from illerimiz 
left join hazurun on hazurun.ili = illerimiz.iller

group by iller
order by iller";
$dizi = mysql_query($sql);

while ($sira = mysql_fetch_array($dizi)){
    $iladi              =$sira["ili"];
    $ilce               =$sira{"IlceSayisi"};
    $il                 =$sira["IlSayisi"];
    $belde              =$sira["BeldeSayisi"];
    $buyuksehir         =$sira["BuyukSehirSayisi"];
    
    $no++;
    $beldesayisi        =$belde+$beldesayisi;
    $ilcesayisi         =$ilce+$ilcesayisi;
    $ilsayisi           =$il+$ilsayisi;
    $buyuksehirsayisi   =$buyuksehir+$buyuksehirsayisi;
    $aktif              =$sira["aktif"];

    if (($buyuksehir=="0") and ($il=="0") and ($ilce=="0") and ($belde=="0")){
        
    echo "
           <tr>
            <td>$no</td>
            <td><b>$iladi <br><b><font color=\"#FFFF00\" size=\"4\">Bu Ilde Hiç Üyemiz Yok</font></b></b></td>
            <td align=\"center\">$buyuksehir</td>
            <td align=\"center\">$il</td>
            <td align=\"center\">$ilce</td>
            <td align=\"center\">$belde</td>
        </tr>
    ";
    }else
   echo "
           <tr>
            <td>$no</td>
            <td><b>$iladi</b></td>
            <td align=\"center\">$buyuksehir</td>
            <td align=\"center\">$il</td>
            <td align=\"center\">$ilce</td>
            <td align=\"center\">$belde</td>
        </tr>
    ";
   

}
$geneltoplam            =$beldesayisi+$ilcesayisi+$ilsayisi+$buyuksehirsayisi;
echo "
<tr>
            <td width=\"27\">&nbsp;</td>
            <td width=\"143\"><font color=\"#FFFF00\" size=\"4\"><b>TOPLAMLAR --&gt;</b></font></td>
            <td align=\"center\" width=\"137\"><font color=\"#FFFF00\" size=\"4\"><b>
            $buyuksehirsayisi</b></font></td>
            <td align=\"center\" width=\"61\"><font color=\"#FFFF00\" size=\"4\"><b>
            $ilsayisi</b></font></td>
            <td align=\"center\" width=\"77\"><font color=\"#FFFF00\" size=\"4\"><b>
            $ilcesayisi</b></font></td>
            <td align=\"center\" width=\"92\"><font color=\"#FFFF00\" size=\"4\"><b>
            $beldesayisi</b></font></td>
        </tr>
<tr>
            <td width=\"27\">&nbsp;</td>
            <td width=\"143\"><font color=\"#FFFF00\" size=\"4\"><b>GENEL TOPLAM--&gt;</b></font></td>
            <td align=\"center\" width=\"137\"><font color=\"#FFFF00\" size=\"4\"><b>
            $geneltoplam</b></font></td>
            <td align=\"center\" width=\"61\"><font color=\"#FFFF00\" size=\"4\"><b>
            </b></font></td>
            <td align=\"center\" width=\"77\"><font color=\"#FFFF00\" size=\"4\"><b>
            </b></font></td>
            <td align=\"center\" width=\"92\"><font color=\"#FFFF00\" size=\"4\"><b>
            </b></font></td>
        </tr>
    </table>
</div>
";
 
sadece buyuksehir degilki il ilce ve beldelerde var.
ayrıca ili=iller kullanildigi için sonuçta yanlis cikiyor zaten.
 
Mysql tablolarınızda eşlestirme yapacaginiz zaman id kullanmanız daha dogru olacaktır. 1. Tablonun id alanıyla 2. Tablonun ili yerine il_id gibi bir alanı eşleştirmek daha dogru sonuçlar verecektir. Tablolarınızı buna göre düzenlemelisiniz.
 
namaldish' Alıntı:
Mysql tablolarınızda eşlestirme yapacaginiz zaman id kullanmanız daha dogru olacaktır. 1. Tablonun id alanıyla 2. Tablonun ili yerine il_id gibi bir alanı eşleştirmek daha dogru sonuçlar verecektir. Tablolarınızı buna göre düzenlemelisiniz.

Öneriniz için teşekkür ederim ama bu sorumun cevabı değil maalesef.
 
valid20' Alıntı:
namaldish' Alıntı:
Mysql tablolarınızda eşlestirme yapacaginiz zaman id kullanmanız daha dogru olacaktır. 1. Tablonun id alanıyla 2. Tablonun ili yerine il_id gibi bir alanı eşleştirmek daha dogru sonuçlar verecektir. Tablolarınızı buna göre düzenlemelisiniz.

Öneriniz için teşekkür ederim ama bu sorumun cevabı değil maalesef.

Arkadaşın dediği doğru. İstediğiniz cevap olmayabilir ama temelde veri tabanı sorunlu tasarlanmış.ve en buyuk sorunda belirtilen il ismi yerine illerdeki id bağlantısı.
 
fatihpc' Alıntı:
valid20' Alıntı:
namaldish' Alıntı:
Mysql tablolarınızda eşlestirme yapacaginiz zaman id kullanmanız daha dogru olacaktır. 1. Tablonun id alanıyla 2. Tablonun ili yerine il_id gibi bir alanı eşleştirmek daha dogru sonuçlar verecektir. Tablolarınızı buna göre düzenlemelisiniz.

Öneriniz için teşekkür ederim ama bu sorumun cevabı değil maalesef.

Arkadaşın dediği doğru. İstediğiniz cevap olmayabilir ama temelde veri tabanı sorunlu tasarlanmış.ve en buyuk sorunda belirtilen il ismi yerine illerdeki id bağlantısı.
Arkadaşların cevaplarına ek olarak MYSQL Workbench kullanmanız tavsiyemdir... Sizin tablolarınız için yapmanız gereken iki tabloyu bos bir ER diyagraminda oluşturarak,görsel araçlar ile 1. Tablodan 2. Tabloya ilişki oluşturmak... Daha sonra oluşturduğunuz tasarımı sunucu ile senkronize edebilirsiniz. Belki tablolarınız normalizasyon kurallarına uymuyor olabilir, siz yeni öğreniyor olabilirsiniz ancak sorgularınızi üç aşağı beş yukarı daha rahat oluşturursunuz...
 
Geri
Üst