folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder PHP Mysql Delete İle INNER JOIN



PHP Mysql Delete İle INNER JOIN

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    $sql="DELETE FROM filmler INNER JOIN film_tur ON '$id'=film_tur.film_id WHERE filmler.id='$id' and film_tur.film_id='$id'";

    yapmaya çalıştığım şey wpdeki kategori mantığını kullandığım sitede filmi sildiğimde film_tur tablosunda eşleştirilmiş girdileri de silmek ama beceremedim. bakabilecek var mı?


    black implies white, self implies other, life implies death.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek
    nurulmac11 bunu yazdı

    $sql="DELETE FROM filmler INNER JOIN film_tur ON '$id'=film_tur.film_id WHERE filmler.id='$id' and film_tur.film_id='$id'";

    yapmaya çalıştığım şey wpdeki kategori mantığını kullandığım sitede filmi sildiğimde film_tur tablosunda eşleştirilmiş girdileri de silmek ama beceremedim. bakabilecek var mı?

    Yukarıda işaretlediğim yerde sıkıntı var hocam,

    Join'in ON kısmında iki tablo alanının birbirine eşitlenmesi gerekiyor (tablo1.alan = tablo2.alan). Sen değişkeni tablo alanına eşitlemişsin. 

    $sql="DELETE FROM filmler INNER JOIN film_tur ON filmler.id = film_tur.film_id WHERE filmler.id=$id ;

    Yukarıdaki şekilde denermisin hocam.

     

     

     

    aercys tarafından 30/Oca/15 14:57 tarihinde düzenlenmiştir

    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek
    aercys bunu yazdı
    nurulmac11 bunu yazdı

    $sql="DELETE FROM filmler INNER JOIN film_tur ON '$id'=film_tur.film_id WHERE filmler.id='$id' and film_tur.film_id='$id'";

    yapmaya çalıştığım şey wpdeki kategori mantığını kullandığım sitede filmi sildiğimde film_tur tablosunda eşleştirilmiş girdileri de silmek ama beceremedim. bakabilecek var mı?

    Yukarıda işaretlediğim yerde sıkıntı var hocam,

    Join'in ON kısmında iki tablo alanının birbirine eşitlenmesi gerekiyor (tablo1.alan = tablo2.alan). Sen değişkeni tablo alanına eşitlemişsin. 

    $sql="DELETE FROM filmler INNER JOIN film_tur ON filmler.id = film_tur.film_id WHERE filmler.id=$id ;

    Yukarıdaki şekilde denermisin hocam.

     

     

     

    yok hocam

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN film_tur ON filmler.id=film_tur.film_id WHERE filmler.id='20' and fil' at line 1

    hata veriyor


    black implies white, self implies other, life implies death.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek
    nurulmac11 bunu yazdı
    aercys bunu yazdı
    nurulmac11 bunu yazdı

    $sql="DELETE FROM filmler INNER JOIN film_tur ON '$id'=film_tur.film_id WHERE filmler.id='$id' and film_tur.film_id='$id'";

    yapmaya çalıştığım şey wpdeki kategori mantığını kullandığım sitede filmi sildiğimde film_tur tablosunda eşleştirilmiş girdileri de silmek ama beceremedim. bakabilecek var mı?

    Yukarıda işaretlediğim yerde sıkıntı var hocam,

    Join'in ON kısmında iki tablo alanının birbirine eşitlenmesi gerekiyor (tablo1.alan = tablo2.alan). Sen değişkeni tablo alanına eşitlemişsin. 

    $sql="DELETE FROM filmler INNER JOIN film_tur ON filmler.id = film_tur.film_id WHERE filmler.id=$id ;

    Yukarıdaki şekilde denermisin hocam.

     

     

     

    yok hocam

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN film_tur ON filmler.id=film_tur.film_id WHERE filmler.id='20' and fil' at line 1

    hata veriyor

    DELETE film_tur.* FROM filmler INNER JOIN film_tur ON filmler.id=film_tur.film_id WHERE filmler.id=$id

    Yukarıdaki şekilde olacak hocam. DELETE'ten sonra silinmesini istediğin tablodan alanları seçmen gerekiyor


    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MadJack
    MadJack's avatar
    Kayıt Tarihi: 07/Temmuz/2014
    Erkek

    Şöyle bir link buldum: http://stackoverflow.com/questions/8598791/sql-delete-with-inner-join

    Buna göre sorgu:

    $sql="DELETE FROM filmler.* INNER JOIN film_tur ON filmler.id = film_tur.film_id WHERE filmler.id=$id ;

    böyle oluyor galiba. aercys'in de dediği gibi datayı değil de tablonun alanlarını joinlemelisin.


    Everyone sees just what they want to see.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    nerdeyse oldu sayılır

    $sql="DELETE film_tur.*,filmler.* FROM filmler INNER JOIN film_tur ON filmler.id=film_tur.film_id WHERE filmler.id='$id'";

    kod eğer tür eklenmemişse çalışmıyor. yani film silinmiyor. tür kayıtlıysa film de türler de sorunsuz siliniyor. neden anlayamadım 


    black implies white, self implies other, life implies death.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek

    Hocam inner join iki tablonun kesişimini verir. Yani filme ait tür yoksa, sorgu sonucunda film'i döndürmez. 

    img_innerjoin.gif

    Bunun için LEFT JOIN kullanman gerekiyor. Yani bu şu demek; filme ait verilen id ye göre tüm kayıtları çek, eğer filme ait tür varsa tür'ü de çek.

    img_leftjoin.gif

    Bu şekilde olması lazım  


    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek
    aercys bunu yazdı

    Hocam inner join iki tablonun kesişimini verir. Yani filme ait tür yoksa, sorgu sonucunda film'i döndürmez. 

    img_innerjoin.gif

    Bunun için LEFT JOIN kullanman gerekiyor. Yani bu şu demek; filme ait verilen id ye göre tüm kayıtları çek, eğer filme ait tür varsa tür'ü de çek.

    img_leftjoin.gif

    Bu şekilde olması lazım  

     

    $sql="DELETE film_tur.*,filmler.* FROM filmler LEFT JOIN film_tur ON filmler.id=film_tur.film_id WHERE filmler.id='$id'";

    eyv hocam bu haliyle sorunsuz oldu.


    black implies white, self implies other, life implies death.
Toplam Hit: 584 Toplam Mesaj: 8