Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

inner join kullanımı hakkında

Merhaba arkadaşlar 4 tablom mevcut bu 4 tabloyu biri birine bağlayarak eşleşen id'leri listelemek istiyorum tablolarım aşağıdaki gibidir



iller
- id
- il
- plaka

ilçeler
- ilce_id
- il_id
- ilce

semtler
- semt_id
- ilce_id
- semt

icerik
- id
- il_id
- ilce_id
- semt_id

Sorgum
SELECT
t1.id,
t1.il,
t2.ilce_id,
t2.il_id,
t2.ilce,
t3.semt_id,
t3.ilce_ID,
t4.il_id,
t4.ilce_id,
t4.semt_id
FROM iller t1
INNER JOIN ilceler t2 ON (t1.id=t2.il_id)
INNER JOIN semt t3 ON (t2.ilce_id=t3.ilce_ID)
INNER JOIN icerik t4 ON (t1.id=t4.il_id OR t2.ilce_id=t4.ilce_id OR t3.semt_id=t4.semt_id)

bu şekilde sorguladığımda tüm illeri,ilçeleri,semtleri listeliyor benim yapmak istediğim ise icerik tablosunda il_id, ilce_id semt_id leri uyuşanları listelemek nerede yanlış yapıyorum acaba ?
  • Zugur'un verdiği örnek çalışmalı herhalde istediğiniz şeyle bizim anladığımız farklı.
    Kesali 10 yıl önce yazdı
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • zugur adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    21 cevap - 0 soru
    SELECT
    t1.id, 
    t1.il, 
    t2.ilce_id, 
    t2.il_id, 
    t2.ilce, 
    t3.semt_id, 
    t3.ilce_ID, 
    t4.il_id, 
    t4.ilce_id, 
    t4.semt_id 
    FROM icerik t4
    LEFT OUTER JOIN iller t1 on t4.il_id=t1.il_id
    LEFT OUTER JOIN ilceler t2 ON t4.ilce_id=t2.ilce_id 
    LEFT OUTER JOIN semt t3 ON t4.semt_id=t3.semt_id 
    
    

    sanırım bütün id'leri icerik tablosunda tutuyorsun, bu şekilde direk birleştirirsen çalışması lazım
    • deja_wu adlı üyenin fotoğrafı deja_wu
      yok dostum böylede tüm listeyi veriyor
      10 yıl önce yazılmış
    • zugur adlı üyenin fotoğrafı zugur
      bağlarken id'leri bir önceki tablodan alarak dene istersen
      10 yıl önce yazılmış
    • zugur adlı üyenin fotoğrafı zugur
      SELECT
      t1.id, 
      t1.il, 
      t2.ilce_id, 
      t2.il_id, 
      t2.ilce, 
      t3.semt_id, 
      t3.ilce_ID, 
      t4.il_id, 
      t4.ilce_id, 
      t4.semt_id 
      FROM icerik t4
      LEFT OUTER JOIN semt t3 ON t4.semt_id=t3.semt_id 
      LEFT OUTER JOIN ilceler t2 ON t3.ilce_id=t2.ilce_id
      LEFT OUTER JOIN iller t1 on t2.il_id=t1.il_id
       
      

      birde böyle dene :)
      10 yıl önce yazılmış
  • Kesali adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    208 cevap - 2 soru
    Database'inin küçük bir kopyasını eklermisin. Yaparak daha kolay çözebiliriz sanki.
    • deja_wu adlı üyenin fotoğrafı deja_wu
      CREATE TABLE `iller` (
      `plaka` tinyint(2) NOT NULL,
      `il` varchar(100) DEFAULT NULL,
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `u_id` int(11) NOT NULL DEFAULT '90',
      `bolge` int(4) NOT NULL,
      PRIMARY KEY (`id`,`u_id`,`bolge`)
      ) ENGINE=MyISAM AUTO_INCREMENT=84 DEFAULT CHARSET=utf8;

      CREATE TABLE `ilceler` (
      `ilce_id` int(3) NOT NULL AUTO_INCREMENT,
      `il_id` int(3) NOT NULL,
      `ilce` varchar(60) COLLATE utf8_turkish_ci NOT NULL,
      `oylesine` varchar(55) COLLATE utf8_turkish_ci NOT NULL,
      PRIMARY KEY (`ilce_id`,`il_id`)
      ) ENGINE=MyISAM AUTO_INCREMENT=961 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci;

      CREATE TABLE `semt` (
      `semt_id` int(5) NOT NULL AUTO_INCREMENT,
      `semt` varchar(60) COLLATE utf8_turkish_ci NOT NULL,
      `mahalle` varchar(100) COLLATE utf8_turkish_ci NOT NULL,
      `postakodu` varchar(6) COLLATE utf8_turkish_ci NOT NULL,
      `ilce_ID` int(5) NOT NULL,
      PRIMARY KEY (`semt_id`,`ilce_ID`)
      ) ENGINE=MyISAM AUTO_INCREMENT=47659 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci;

      CREATE TABLE `icerik` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `il_id` int(11) NOT NULL,
      `ilce_id` int(11) NOT NULL,
      `semt_id` int(11) NOT NULL,
      `yazi` text COLLATE utf8_bin,
      PRIMARY KEY (`id`,`il_id`,`ilce_id`,`semt_id`)
      ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

      tablo yapılarım bu şekildedir
      10 yıl önce yazılmış