SELECT
 oykuler.id AS oykul_ID,
 oykuler.image AS oyku_image,
 oykuler.baslik AS oyku_baslik,
 oykuler.spot AS oyku_spot,
 yazarlar.id AS yazar_id,
 yazarlar.adsoyad AS yazar_adsoyad
FROM
 oykuler
LEFT JOIN yazarlar ON
 yazarlar.id = oykuler.yazar_id
WHERE
 oykuler.yayin='E'
ORDER BY
 oykuler.tarih DESC
LIMIT $i,1
Çift tablo ile uğraşırken tablodaki alan adlarının aynı olması sonucu bazı karışıklıklar oluyor. Bunların önüne geçmek için tablo alan adını başka bir isim ile temsil ettiriyorum. Yani "AS" kelimesinden sonraki yerler tablo alanlarını ifade etmiyor. Sadece sorgu sonucunda alınan verilerdeki alanların adını belirtiyor.

Örnek:
İki tane tablomuz var diyelim;
tablo1 ------ tablo2
id                id
alan            alan
Mesela iki tablodanda aynı anda veri çekerken id verileri sadece bir tablodan gelir çünkü iki tablo alan adıda aynıdır. Bunun önüne geçmek için SELECT içinde tablo.alan AS "yeniisim" şeklinde tanımlama yapılır. Sorgunun dönderdiği verilere bakarsanız daha iyi anlayabilirsiniz.

Tabikide sizin tablo alanlarınızda aynı isimli olan sadece id var. Ben yinede yazarın adsoyadını da tanımladım.

Size verdiğim SQL kodunu denediniz mi ? Önce onu deneyin, çalışması lazım tablo alanları doğru ise.