• 21-08-2010, 19:04:02
    #10
    tabloda gereken değişikliği yapacağımı söyledim, arkadas diye bir tablo oluşturarak arkadaş olan iki id'nin kaydını alıyorum tamam, peki şimdi?
  • 21-08-2010, 19:09:39
    #11
    Üyeliği durduruldu
    Muzo adlı üyeden alıntı: mesajı görüntüle
    tabloda gereken değişikliği yapacağımı söyledim, arkadas diye bir tablo oluşturarak arkadaş olan iki id'nin kaydını alıyorum tamam, peki şimdi?
    şimdi tablo isimlerini ve alanlarını yazarsanız size ortak arkadaşları verecek sql cumlesini yazabiliriz
  • 21-08-2010, 19:25:33
    #12
    D3LLy adlı üyeden alıntı: mesajı görüntüle
    şimdi tablo isimlerini ve alanlarını yazarsanız size ortak arkadaşları verecek sql cumlesini yazabiliriz
    İlginiz için çok teşekkürler öncelikle.

    Uyeler Tablosunda
    Id, kullanıcı adı ve diğer bilgiler var.

    Arkadas Tablosunda
    Kisi1 ve Kisi2 şeklinde arkadaş olan iki kişi tutuluyor.
  • 22-08-2010, 00:30:27
    #13
    SELECT u.id, u.kullanici_adi FROM uyeler u WHERE u.id IN (SELECT a.kisi2 FROM arkadas a WHERE a.kisi1 = 5 AND a.kisi2 IN (SELECT a2.kisi2 FROM arkadas a2 WHERE a2.kisi1 = 10 ))
    5 ve 10 nolu ID sahip kişilerin ortak arkadaşlarını listeler..
  • 22-08-2010, 01:29:46
    #14
    Performans için tablonuzu uye INT(255), ark INT(255) yapıp ikisine de INDEX oluşturmalısınız. Web alanınızı baya bir kısıtlayacak olmasının yanında bence gözle görülür performans artışı sağlar. Sorgunuz da şöyle olur:

    $gyu = $_GET['gyu']; // gys: giriş yapmış üye, 25 döndüğünü varsayalım
    $pbu = $_GET['pbu']; // pbu: profiline bakılan üye, 14 döndüğünü varsayalım
    
    mysql_query(
    "SELECT gyu.uye, pbu.uye, gyu.ark, pbu.ark
    FROM arklar AS gyu
    INNER JOIN arklar AS pbu
    ON (pbu.ark=gyu.ark AND pbu.uye='14')
    WHERE gyu.uye='25'"
    );
    Denedim, sorunsuz çalışıyor bu. Tablo şöyle komple:

    CREATE TABLE `arklar` (
      `uye` int(255) NOT NULL,
      `ark` int(255) NOT NULL,
      KEY `uye` (`uye`),
      KEY `ark` (`ark`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    -- 
    -- Dumping data for table `arklar`
    -- 
    
    INSERT INTO `arklar` VALUES (14, 14);
    INSERT INTO `arklar` VALUES (25, 14);
    INSERT INTO `arklar` VALUES (14, 15);
    INSERT INTO `arklar` VALUES (25, 15);
    INSERT INTO `arklar` VALUES (14, 8);
    INSERT INTO `arklar` VALUES (25, 8);
    INSERT INTO `arklar` VALUES (14, 18);
    INSERT INTO `arklar` VALUES (25, 18);
    INSERT INTO `arklar` VALUES (14, 17);
    INSERT INTO `arklar` VALUES (25, 17);
    INSERT INTO `arklar` VALUES (14, 24);
    INSERT INTO `arklar` VALUES (25, 44);
    INSERT INTO `arklar` VALUES (14, 64);
    INSERT INTO `arklar` VALUES (25, 47);