INNER JOIN.
Merhaba arkadaşlar öncelikle kolay gelsin hepinize. iki ayrı tablodan verileri çekmek.
sorgu şekli ;
$seolink = seo("$b[kategori_adi]");
$genel_sorgu = mysql_query("SELECT * FROM firmalar WHERE (kategoriId = '$id') and onay = '1'");
$toplam_kayit=mysql_num_rows($genel_sorgu);
$toplam_sayfa=ceil($toplam_kayit / $sayfalik_kayit);
$carp=$sayfa * $sayfalik_kayit;
$sql = mysql_query("SELECT * FROM firmalar WHERE kategoriId = '$id' and onay = '1' LIMIT $baslangic, $sayfalik_kayit");
___________________________
From firmalar, firmalar2 şeklinde denedim olmadı.
$sql = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON kategoriId=kategoriId WHERE kategoriId = '$id' and onay = '1' LIMIT $baslangic, $sayfalik_kayit");
Şeklinde de denedim olmadı. bunu nasıl yapabilirim. şimdiden teşekkür ediyorum
Php
WHERE kısmında hata yapmışsın. birde bu tip durumlarda hataları göstermek lazım.
komutun alt satırına şunu yaz.
echo mysql_error();
üsteki bölümde yazdığım gibi yapınca çalışıyor yine de yazmam gerekiyormu
Php
onu demiyorum. JOIN denemesi yapıyorsun ve hatayı göremiyorsun. o zaman dediğim komutu yazarsan ekranda hata sebebi yazar.
mesela şöyle yazar :There is no such row `kategoriId`.
bu tip hatayı forumda yazarsan, sana Türkçesini yazarım.
senin komut da yaklaşık böyle birşey olacak:
ON firmalar2 .kategoriId=firmalar.Id
WHERE kategoriId = '$id' and onay = '1'
LIMIT $baslangic, $sayfalik_kayit");
Php
iki tabloda aynı sütun ismi varsa sorun çıkar. herşeyi belirtmek en güzeli. tablo.sutun şeklinde WHERE kısmında yazmak lazım.
Bu sefer böyle denedim;
$genel_sorgu = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON firmalar2.kategoriId=firmalar.kategoriId WHERE kategoriId = '$id' and onay = '1'");
$toplam_kayit=mysql_num_rows($genel_sorgu);
$toplam_sayfa=ceil($toplam_kayit / $sayfalik_kayit);
$carp=$sayfa * $sayfalik_kayit;
$sql = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON firmalar2.kategoriId=firmalar.kategoriId WHERE kategoriId = '$id' and onay = '1' LIMIT $baslangic, $sayfalik_kayit");
echo mysql_error();
hata : Column 'kategoriId' in where clause is ambiguous
Eğer iki tabloyu join yapmışsanız. ve bu tablolarda aynı isimlerde iki stunlar bulunuyorsa eğer;
stun adı belirtirken tablo adınında belirtilmesi gerekli;
WHERE tabloadi.stunadi = 'merhaba';
gibi bir kullanım yapmanız gerekli aksi halde
Column 'kategoriId' in where clause is ambiguous hatasını almanız doğaldır
bu hatanın türkçeside;
Sayın coder sen bana kategoriId adında bir stuna göre şart koştun ama
birleştirilen tablonun ikisindede bu isimde bir stun mevcut. Ben hangi tablonun bu isimdeki stununa göre şart koşacağımı bilemedim diyor.
çok teşekkür ederim de
$sql = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON firmalar2.kategoriId=firmalar.kategoriId WHERE kategoriId = '$id' and onay = '1' LIMIT $baslangic, $sayfalik_kayit");
bu kodun düzeltilmiş hali nasıl oluyor peki, dediğinize göre
$sql = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON firmalar2.kategoriId=firmalar.kategoriId WHERE tablo adı.kategoriId = '$id' and onay = '1' LIMIT $baslangic, $sayfalik_kayit");
yukarda tablo adı yazan yere kullanmak istediğin tablonun adını yazarsın olur biter.
Düzeltilmişi budur.
dediğiniz gibi yaptım aynen şu şekilde.
$genel_sorgu = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON firmalar2.kategoriId=firmalar.kategoriId WHERE firmalar.kategoriId = '$id' and onay = '1'");
$toplam_kayit=mysql_num_rows($genel_sorgu);
$toplam_sayfa=ceil($toplam_kayit / $sayfalik_kayit);
$carp=$sayfa * $sayfalik_kayit;
$sql = mysql_query("SELECT * FROM firmalar INNER JOIN firmalar2 ON firmalar2.kategoriId=firmalar.kategoriId WHERE firmalar.kategoriId = '$id' and onay = '1' LIMIT $baslangic, $sayfalik_kayit");
echo mysql_error();
bu seferde
Column 'onay' in where clause is ambiguous şeklinde davrandı :)