• 19-10-2013, 11:22:49
    #1
    Sistemime sosyal ağlara bağlanmak için script yazıyorum. SQL olarak bir sorunum var.
    3 tane tablom var.
    google_users | facebook_users | users

    SQL
    $sql = 'SELECT u.email, g.google_email, f.email FROM users u,google_users g,facebook_users f WHERE u.email='$email' OR g.google_email='$email' OR f.email = '$email';
    Google ve Facebook Users tablosu boş fakat users tablosunda kullanıcı var.
    Sorgu boş dönüyor ne yapmalıyım ?
    $email değişkenini okuduğumda veri geliyor.

    NOT: 3 tabloda aynı mail olunca sorgu dolu geliyor, birinde olup diğerinde olmazsa boş dönüyor nasıl yapmalıyım ?
  • 19-10-2013, 12:43:22
    #2
    Left join ile, yoksa bile diğerlerinin null gelmesini sağlayabilirsin, tablo yapını bilmediğim için email ile join yaptım şunu deneyebilrisin

    $sql = 'SELECT u.email, g.google_email, f.email 
    FROM users u 
    LEFT JOIN google_users g ON u.email=g.google_email 
    LEFT JOIN facebook_users f ON u.email=f.email 
    WHERE u.email='$email';
  • 19-10-2013, 16:36:14
    #3
    tfnyldrm adlı üyeden alıntı: mesajı görüntüle
    Left join ile, yoksa bile diğerlerinin null gelmesini sağlayabilirsin, tablo yapını bilmediğim için email ile join yaptım şunu deneyebilrisin

    $sql = 'SELECT u.email, g.google_email, f.email 
    FROM users u 
    LEFT JOIN google_users g ON u.email=g.google_email 
    LEFT JOIN facebook_users f ON u.email=f.email 
    WHERE u.email='$email';
    Hata Verdi.
    Illegal mix of collations (utf8_turkish_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

    Şu sorguyla çözdüm problemi.
    $sql = mysql_query("SELECT email FROM (SELECT email FROM facebook_users UNION SELECT email FROM users) AS tablo WHERE tablo.email='$email'");