• 27-09-2017, 17:43:41
    #1
    merhaba arkadaşlar,
    3 adet tablom mevcut
    rapor tablosu (id,firma,ilkil,ilkilce,fiyat,sonrail,sonrailce)
    il tablosu (id, il_adi)
    ilce tablosu (id, ilce_adi)
    oluşturduğum sorgu:
    $sorgu=mysql_query("select rapors.*,il.il_adi,ilce.ilce_adi from rapors INNER JOIN il ON rapors.ilkil= il.id INNER JOIN ilce ON rapors.ilkilce= ilce.id");
    rapor tablosu ile inner join kurdum fakat sonrail ve sonrailce sütunlarını hiçe sayıyor ve ilkil ve ilkilce verilerinin çıktısını veriyor.
    iki adet il ve ilçe seçimim var fakat ikisine de aynı il ilçeyi veriyor

    <?php echo $ogrenci['il_adi']; ?> / <?php echo $ogrenci['ilce_adi']; ?>
    nerede hata yapıyorum acaba?
  • 27-09-2017, 20:57:08
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    dostum yardımcı olayım dedim ama sorduğun sorudan hiç bişey anlamadım, özellikle şu kısımdan
    Alıntı
    rapor tablosu ile inner join kurdum fakat sonrail ve sonrailce sütunlarını hiçe sayıyor ve ilkil ve ilkilce verilerinin çıktısını veriyor.
    inner join kurdum ne demek ?
    sutunlari hiçe sayıyor ne demek ?
    Bence sen soruyu bir daha toparlayıp öyle sor ve yazmış olduğun php kodlarıyla beraber buraya ekle, sanırım böyle daha iyi yardımcı oluruz.
  • 27-09-2017, 21:39:43
    #3
    ne sorduğunu anlamadım ama ilk bakışta gördüklerim şunlar

    rapor tablosu (id,firma,ilkil,ilkilce,fiyat,sonrail,sonrailce)
    il tablosu (id, il_adi)
    ilce tablosu (id, ilce_adi)

    öncelikle tablolar arasında bir bağlantı kuracaksan ortak bir bağlantı elemanına ihtiyacın var
    eğer id ortak bağlantı elemanın değilse,

    yani sorgunda 3 tablodanda aynı id ye ait verileri çekmeyeceksen 2. ve 3. tablonda başka ortak sütun yok burdan devam edemezsin

    varsayalım ki 3 tablodan aynı id ye sahip verileri çekeceksin


    SELECT 
    a.id,
    a.firma,
    a.ilkil,
    a.ilkilce,
    a.fiyat,
    a.sonrail,
    a.sonrailce,
    b.id,
    b.il_adi,
    c.id,
    c.ilce_adi
    
    FROM
    rapor tablosu a,
    il b,
    ilce c
    
    WHERE
    a.id=b.id and a.id=c.id
    bu sorgunun sonuçlarını foreach yada while ile döndürebilirsiniz
    yeni where koşulları ekleyerek sorguyu daraltabilir, tek bir id yi sorgulayabilirsiniz.
  • 27-09-2017, 23:57:11
    #4
    coder16 adlı üyeden alıntı: mesajı görüntüle
    dostum yardımcı olayım dedim ama sorduğun sorudan hiç bişey anlamadım, özellikle şu kısımdan
    inner join kurdum ne demek ?
    sutunlari hiçe sayıyor ne demek ?
    Bence sen soruyu bir daha toparlayıp öyle sor ve yazmış olduğun php kodlarıyla beraber buraya ekle, sanırım böyle daha iyi yardımcı oluruz.
    greyder adlı üyeden alıntı: mesajı görüntüle
    ne sorduğunu anlamadım ama ilk bakışta gördüklerim şunlar

    rapor tablosu (id,firma,ilkil,ilkilce,fiyat,sonrail,sonrailce)
    il tablosu (id, il_adi)
    ilce tablosu (id, ilce_adi)

    öncelikle tablolar arasında bir bağlantı kuracaksan ortak bir bağlantı elemanına ihtiyacın var
    eğer id ortak bağlantı elemanın değilse,

    yani sorgunda 3 tablodanda aynı id ye ait verileri çekmeyeceksen 2. ve 3. tablonda başka ortak sütun yok burdan devam edemezsin

    varsayalım ki 3 tablodan aynı id ye sahip verileri çekeceksin


    SELECT a.id, a.firma, a.ilkil, a.ilkilce, a.fiyat, a.sonrail, a.sonrailce, b.id, b.il_adi, c.id, c.ilce_adi FROM rapor tablosu a, il b, ilce c WHERE a.id=b.id and a.id=c.id
    bu sorgunun sonuçlarını foreach yada while ile döndürebilirsiniz
    yeni where koşulları ekleyerek sorguyu daraltabilir, tek bir id yi sorgulayabilirsiniz.
    anlatamadığım için kusruma bakmayın lütfen bir çok problemden ötürü kafam oldukça dolu. eve geldiğimde yazdıklarımdan ben de bir şey anlamadım. şimdi tane tane anlatma fırsatı bulmuş durumdayım.

    3 adet tablom mevcut, bunlar:
    rapors tablosu (id, firma, birinci_il, birinci_ilce, fiyat, ikinci_il, ikinci_ilce)
    il tablosu (id, il_adi) - rapors tablosundaki birinci_il ve ikinci_il idleri buradaki id ile aynı
    ilce tablosu (id, ilce_adi) rapors tablosundaki birinci_ilçe ve ikinci_ilçe idleri buradaki id ile aynı

    rapor-gonder.php sayfamda rapors tablosunun tamamını dolduruyorum birinci_il birinci_ilce ve ikinci_il, ikinci_ilce ise il tablosundaki idlerine göre ekleniyor.

    rapor-goster.php sayfasında ise rapors tablosundaki verileri listeletiyorum fakat birinci il ilçe ve ikinci il ilçe kısmını il ve ilçe tablosundan isimlerini yazdıramıyorum.

    inner join kullanarak aşağıda bulunan kodu oluşturdum:
    $sorgu=mysql_query("select rapors.*,il.il_adi,ilce.ilce_adi from rapors INNER JOIN il ON rapors.birinci_il= il.id INNER JOIN ilce ON rapors.birinci_ilce= ilce.id");
    sorguyu bu şekilde yaptığımda listeleme şu şekilde oluyor

    ID - A Firması - Kocaeli / Darıca - 400 TL - Kocaeli / Darıca

    rapors tablosunda birinci il ve birince ilçe kocaeli darıca doğru iken ikinci_il ve ikinci_ilçe ise ankara/çankaya idlerini taşımakta.

    yani ben birinci_il ve birinci_ilçe için inner join kullandım fakat ikincisi için kuramadım.

    umarım anlatabilmişimdir
  • 28-09-2017, 00:28:13
    #5
    Vosvos adlı üyeden alıntı: mesajı görüntüle
    anlatamadığım için kusruma bakmayın lütfen bir çok problemden ötürü kafam oldukça dolu. eve geldiğimde yazdıklarımdan ben de bir şey anlamadım. şimdi tane tane anlatma fırsatı bulmuş durumdayım.

    3 adet tablom mevcut, bunlar:
    rapors tablosu (id, firma, birinci_il, birinci_ilce, fiyat, ikinci_il, ikinci_ilce)
    il tablosu (id, il_adi) - rapors tablosundaki birinci_il ve ikinci_il idleri buradaki id ile aynı
    ilce tablosu (id, ilce_adi) rapors tablosundaki birinci_ilçe ve ikinci_ilçe idleri buradaki id ile aynı

    rapor-gonder.php sayfamda rapors tablosunun tamamını dolduruyorum birinci_il birinci_ilce ve ikinci_il, ikinci_ilce ise il tablosundaki idlerine göre ekleniyor.

    rapor-goster.php sayfasında ise rapors tablosundaki verileri listeletiyorum fakat birinci il ilçe ve ikinci il ilçe kısmını il ve ilçe tablosundan isimlerini yazdıramıyorum.

    inner join kullanarak aşağıda bulunan kodu oluşturdum:
    $sorgu=mysql_query("select rapors.*,il.il_adi,ilce.ilce_adi from rapors INNER JOIN il ON rapors.birinci_il= il.id INNER JOIN ilce ON rapors.birinci_ilce= ilce.id");
    sorguyu bu şekilde yaptığımda listeleme şu şekilde oluyor

    ID - A Firması - Kocaeli / Darıca - 400 TL - Kocaeli / Darıca

    rapors tablosunda birinci il ve birince ilçe kocaeli darıca doğru iken ikinci_il ve ikinci_ilçe ise ankara/çankaya idlerini taşımakta.

    yani ben birinci_il ve birinci_ilçe için inner join kullandım fakat ikincisi için kuramadım.

    umarım anlatabilmişimdir
    Sen rapors tablosundan veri çekerken inner join ile diğer 2 tabloyu birbirine bağlamışsın, buraya kadar doğru.
    Veri olarak gelenler mi yanlış diyorsun ?
    Örnek veriyi yazabilirmisin, hem rapors tablosundan hem de il, ilce tablosundan. (Veritabanında ne kayıtlı onu görelim)
  • 28-09-2017, 00:33:37
    #6
    Önce il tablosunda ki id numarasını ilçe tablosuna da kaydetmelisin ki bağlantı kurabilesin.

    O ilçenin hangi ile ait olduğunu anlamak için ilçe tablosunda il_id olmalı.
    Firma tablosundaki il_id ve ilçe tablosundaki il_id ve il tablosunda ki id ler aynı olacak.
    Tek sorguda join yapabilmen için yukarıda saydıklarımı yapman gerek.
  • 28-09-2017, 00:37:37
    #7
    coder16 adlı üyeden alıntı: mesajı görüntüle
    dostum yardımcı olayım dedim ama sorduğun sorudan hiç bişey anlamadım, özellikle şu kısımdan
    inner join kurdum ne demek ?
    sutunlari hiçe sayıyor ne demek ?
    Bence sen soruyu bir daha toparlayıp öyle sor ve yazmış olduğun php kodlarıyla beraber buraya ekle, sanırım böyle daha iyi yardımcı oluruz.
    coder16 adlı üyeden alıntı: mesajı görüntüle
    Sen rapors tablosundan veri çekerken inner join ile diğer 2 tabloyu birbirine bağlamışsın, buraya kadar doğru.
    Veri olarak gelenler mi yanlış diyorsun ?
    Örnek veriyi yazabilirmisin, hem rapors tablosundan hem de il, ilce tablosundan. (Veritabanında ne kayıtlı onu görelim)
    birinci_il id= 1 birinci_ilçe id = 1
    ikinci_il id = 2 ikinci_ilçe id= 2
    gelen veri inner joinden önce:

    ID - A Firması - 1(birinci_il id) / 1 birinci_ilce id) - 400 TL - 2 (ikinci_il id) / 2 ikinci_ilce id)
    gelen veri inner joinden sonra:
    ID - A Firması - Kocaeli / Darıca - 400 TL - Kocaeli / Darıca
    olması gereken
    ID - A Firması - Kocaeli / Darıca - 400 TL - Ankara / Çankaya
    yani ikinci_il ve ikinci_ilce için inner join kuramadım
    kocaeli = 1

    darıca = 1

    ankara = 2
    çankaya = 2

    <?php echo $ogrenci['il_adi']; ?> / <?php echo $ogrenci['ilce_adi']; ?>
    bu sorgu ile il ilçe verisini çekmekteyim her iki il ilçe içinde aynı sorguyu kullanıyorum

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 00:37:37 -->-> Daha önceki mesaj 00:33:47 --

    disconnect adlı üyeden alıntı: mesajı görüntüle
    Önce il tablosunda ki id numarasını ilçe tablosuna da kaydetmelisin ki bağlantı kurabilesin.

    O ilçenin hangi ile ait olduğunu anlamak için ilçe tablosunda il_id olmalı.
    Firma tablosundaki il_id ve ilçe tablosundaki il_id ve il tablosunda ki id ler aynı olacak.
    Tek sorguda join yapabilmen için yukarıda saydıklarımı yapman gerek.
    söylediklerinin tamamı hazır hocam ilk alıntıladığım kısımda örnekle gösterdim
  • 28-09-2017, 00:46:03
    #8
    Firma: il_id
    İller: id
    İlçe: il_id
    SELECT * FROM firma as F INNER JOIN iller as il ON F.il_id=il.id INNER JOIN ilce as ilc ON il.id=ilc.il_id

    buna göre düzenlersen hatasız sorgularsın.
  • 28-09-2017, 01:05:41
    #9
    Vosvos adlı üyeden alıntı: mesajı görüntüle
    yani ikinci_il ve ikinci_ilce için inner join kuramadım
    Bunun için zaten inner join kullanamazsın. Sen rapors tablosundan çıkan verileri il ve ilce tablosundaki verilerle karşılaştırman lazım.

    Senin ne yapmak istediğini tam olarak anladım, fakat bunu ya SELECT IN SELECT (Sorgu içinde sorgu) ile ya da sadece rapors tablosundaki verileri çektikten sonra il ve ilçe tablosundaki verilerle karşılaştırarak yapabilirsin. Yani rapors sorgusundan çıkan verileri il ve ilçe SQL i ile sorgulayarak öğrenebilirsin.
    Çünkü sen rapors verilerini il ve ilçe verileri ile karşılaştırmak istiyorsun.
    Eğer yüksek veriler ile çalışacaksan Sorgu içinde sorgu çalıştırmanı tavsiye etmem.
    Şu kod sanırım senin istediğin veriyi verecek.

    select il.il_adi,ilce.ilce_adi, (SELECT il.il_adi FROM il WHERE il.id = rapors.ikinci_il) as ikinci_il, (SELECT ilce.ilce_adi FROM ilce WHERE ilce.id = rapors.ikinci_ilce) as ikinci_ilce from rapors INNER JOIN il ON rapors.birinci_il= il.id INNER JOIN ilce ON rapors.birinci_ilce= ilce.id