• 21-10-2008, 19:18:53
    #1
    merhabalar arkadaşlar şimdi elimde 2 tane tablo var

    birincisinin yapısı şöyle (tablo adı uyeler):


    id kullaniciadi puan
    2 fatal 3
    5 deneme 4
    7 r10 5

    ikinci tablonun yapısı ise şöyle (tablo adı eslesenler) :


    id # eslesen_id # eslesen_kullanici # eslesilen_id # eslesilen_kullanici
    1 2 fatal 7 r10

    şimdi bir takım sql sorgularıyla uyeler tablosundan üyeleri birbiriyle eşleştirip eslesenler tablosuna insert ediyorum. ama bu işlemi 3 sql sorgusuyla yapıyorum şöyleki : önce

    $sorgu=mysql_query("select * from uyeler where kullaniciadi != 'fatal' and puan>'3' ");

    sorgusuyla kriterlerime uygun kendi kullanıcı adım dışındaki üyeleri çekiyorum, sonra mysql_fetch_array yapıyorum

    while($bulunan=mysql_fetch_array($sorgu))

    daha sonra ise bu üyeyle daha önceden eşleşilmişmi diye eslesenler tablosuna farklı bir sql sorgusu daha yapıyorum

    $bak=mysql_query("select * from eslesenler where eslesen_kullanici='fatal' and eslesen_id='2' and eslesilen_id='".$bulunan["id"]."' and eslesilen_kullanici='".$bulunan["kullaniciadi"]."' ");

    $say=mysql_num_rows($bak);

    eğer $say==0 ise eslesenler tablosuna insert ediyorum 1 ise hiç bir işlem yaptırmıyorum.

    Şimdi gelelim sorunuma ben bu işlemleri birden fazla sql sorgusu kullanarak yapıyorum istediğim şey ise bu işi tek sql sorgusuyla nasıl yapabilirim acaba ? şimdiden herkese teşekkürler
  • 21-10-2008, 19:27:48
    #2
    Yazdıklarının sadece başlangıç kısmını okudum, iki veya daha fazla tabloyu tek sorgu ile birbirine bağlamak istiyorsan join kullanmalısın.

    MySQL :: MySQL 5.0 Reference Manual :: 12.2.8.1 JOIN Syntax
  • 22-10-2008, 03:20:51
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    select u.*, e.* from eslesenler as e, uyeler as u  where u.kullaniciadi != 'fatal' and u.puan>'3' and e.eslesilen_kullanici = u.kullaniciadi and e.eslesen_kullanici='fatal'
    isa ne istediğini tam anlıyamadım ama

    1 - eslesen ile eslenen aynı olmasın diyosun
    2- fatal kullanıcı adı ile daha önce eslenmemiş kullanıcı olsun diyosun
    3- puanı da 3 den büyük olsun diyosun

    bu sorgu işini görür eğer böyle ise.

    bu işleri yaparken "puan, eslesilen_kullanici, kullaniciadi" bunları index. yap. sorguyu da explain ettir. sorgu sunucuyu s..mesin. index optimizasyonu yapmak lazım.


    PHP ve SQL bilmiyorum ama işini görürse yukarıdakileri kullanırsın