Mysql 4.* versiyonlarından 5.* versiyonuna geçerken yaşanan önemli bir sorun var.
Kullanılan sorgularda eğer birden fazla tablodan veri çekiyorsanız tabloları bağlamak için ya virgül (,) ya da inner join, left join, outer join gibi join syntaxları kullanmanız gerekmektedir.
Mysql 5 ile birlikte virgül (,) operatörünün önceliği düşürülmüştür. Bu nedenden dolayı Mysql 4 ve öncesi versiyonlarda sorunsuz çalışan aşağıdaki gibi bir sorgu Mysql 5 te hataya neden olacaktır.
SELECT * FROM a,b INNER JOIN c ON a.id=c.id WHERE a.id=b.id
Bu sorunu çözmek için iki yöntem kullanılabilir.
1. yöntemde parantezler ile virgülün önceliği belirlenir;
SELECT * FROM (a,b) INNER JOIN c ON a.id=c.id WHERE a.id=b.id
2. yöntemde virgül operatörü inner join ile değiştirilir;
SELECT * FROM a INNER JOIN b ON a.id=b.id INNER JOIN c ON a.id=c.id

Son Yorumlar