SharpShooter bunu yazdı iç içe çok select kullanmışsın, performans sıfır :) mssql için yazıyorum, select p. , c. from post_category_relations PCR INNER JOIN posts p in p. postsId = PCR. postsId Inner JOIN category c in c. categoryId = PCR. categoryID WHERE PCR. categoryID = 2 kolay gelsin inner join'deki in leri on'a çevirirsen mysql'de de çalışması gerekiyor. çevirdim hocam: SELECT posts. , categories. FROM post_category_relationsINNER JOIN posts ON posts. post_id = post_category_relations. post_idINNER JOIN categoriesIN categories. cat_id = post_category_relations. category_idWHERE post_category_relations. category_id =2LIMIT 0, 30

bi ayılayım hallolmadıysa bakıcam Bittik biz bittik

Once Posts tablosunun icinde categori_id diye bir sutun olusturup, postlarin categori id lerini burada tut. post_category_relations diye bir tabloya hic ihtiyacin yok. Asagidaki sorgu isini gorur. SELECT c. cat_name, p. title, p. content, p. date, p. active FROM categories c LEFT JOIN posts p ON c. cat_id = p. categori_id WHERE c. cat_id = '2' Edit: Sorgularinda sutun sayisi ne kadar olursa olsun kullanman pek iyi degil. hocam bir post birden fazla kategorideyse ne yapıcaz?

inner joindeki in'leri on'a çevirirsen mysql'de de çalışması gerekiyor. Austen tarafından 26/Eki/12 10:17 tarihinde düzenlenmiştir

INNER JOIN categoriesIN categories. cat_id = post_category_relations. category_id burdakini unutmuşsun. column adlarında sıkıntı yoksa çalışması gerekiyor.

Navicat kullan query builder diye bişeyi var hiç sql bilmeden veri tabanı kullanırsın :D

Once Posts tablosunun icinde categori_id diye bir sutun olusturup, postlarin categori id lerini burada tut. post_category_relations diye bir tabloya hic ihtiyacin yok. Asagidaki sorgu isini gorur. SELECT c. cat_name, p. title, p. content, p. date, p. active FROM categories c LEFT JOIN posts p ON c. cat_id = p. categori_id WHERE c. cat_id = '2' Edit: Sorgularinda sutun sayisi ne kadar olursa olsun kullanman pek iyi degil. sniperscope tarafından 26/Eki/12 10:34 tarihinde düzenlenmiştir "Yer yuzunde hic bir pislik yoktur ki; altindan bir yahudi cikmasin" Adolf Hitler... "Turkiye de hicbir pislik yokturki altindan cemaat cikmasin" SniperScope "Nerede yavşak, hırsız varsa hepsi Allahçı" Fazil Say

evet hocam aynen, dedigin gibi. posts tablosundaki categori_id yi unique yapmazsan istedigin kadar post girebilirsin. Gecenlerde bir musterim icin yaptigim link tablosu ornegi var asagida. Kategori master tablosu: CREATE TABLE link_category ( category_id int(2) unsigned NOT NULL AUTO_INCREMENT, category_name varchar(60) NOT NULL, PRIMARY KEY ENGINE=InnoDB DEFAULT CHARSET=utf8; one to many iliskisi link tablosu : CREATE TABLE link_link ( link_id int(4) unsigned NOT NULL AUTO_INCREMENT, category_id int(2) NOT NULL, shop_name varchar(60) DEFAULT NULL, shop_url varchar(150) DEFAULT NULL, banner_file varchar(20) DEFAULT NULL, banner_code text, PRIMARY KEY ENGINE=InnoDB DEFAULT CHARSET=utf8; hocam bir postun birden fazla kategorisi olamıyo senin yapında, one to many değil bu bildiğin one to one relation, bende deli bişey arıyorum

INNER JOIN categoriesIN categories. cat_id = post_category_relations. category_id burdakini unutmuşsun. column adlarında sıkıntı yoksa çalışması gerekiyor. @slothere @sharpshooter süpersiniz hocalar, ben olaya yanlış yaklaşıyomuşum sanırım.

O nasil olacak anlamadim. Bir post sadece bir kategoriye ait olur, ve onun alt kategorisi olur. Simdi, karsinda bir araba var, bu araba hem arac kategorisinde, hemi gemi, hemde ucak kateogirisinde. sniperscope tarafından 26/Eki/12 11:15 tarihinde düzenlenmiştir "Yer yuzunde hic bir pislik yoktur ki; altindan bir yahudi cikmasin" Adolf Hitler... "Turkiye de hicbir pislik yokturki altindan cemaat cikmasin" SniperScope "Nerede yavşak, hırsız varsa hepsi Allahçı" Fazil Say

iç içe çok select kullanmışsın, performans sıfır :) mssql için yazıyorum, select p. , c. from post_category_relations PCR INNER JOIN posts p in p. postsId = PCR. postsId Inner JOIN category c in c. categoryId = PCR. categoryID WHERE PCR. categoryID = 2 kolay gelsin hocu mysql de çalışmadı bu, aynı mantıkla tekrar yazdım yine olmadı benmi yanlış yapıyorum :/ deli oldum amnk. wordpress e baktım şimdi adamlar 3-4 sorguda yapmış tek sorguda yapmak istiyorum ben

o zaman soyle yap WHERE c. cat_id = '2' OR c. cat_id = '3' hocam senin nerdiğin yapı şu şekilde değilmi: post tablosu : id, title, content, category_id category tablosu: category_id, category_name post girerken category_id alanına kategori tablosunda ki id yi giricez, çekerkende ordan bakıp çekicez. bu şekilde nasıl birden fazla kategori giricem? yoksa benmi yanlış anladım seni?

iç içe çok select kullanmışsın, performans sıfır :) mssql için yazıyorum, select p. , c. from post_category_relations PCR INNER JOIN posts p in p. postsId = PCR. postsId Inner JOIN category c in c. categoryId = PCR. categoryID WHERE PCR. categoryID = 2 kolay gelsin - xx yerde hata var. - ya aslında kod şyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...

evet hocam aynen, dedigin gibi. posts tablosundaki categori_id yi unique yapmazsan istedigin kadar post girebilirsin. Gecenlerde bir musterim icin yaptigim link tablosu ornegi var asagida. Kategori master tablosu: CREATE TABLE link_category ( category_id int(2) unsigned NOT NULL AUTO_INCREMENT, category_name varchar(60) NOT NULL, PRIMARY KEY ENGINE=InnoDB DEFAULT CHARSET=utf8; one to many iliskisi link tablosu : CREATE TABLE link_link ( link_id int(4) unsigned NOT NULL AUTO_INCREMENT, category_id int(2) NOT NULL, shop_name varchar(60) DEFAULT NULL, shop_url varchar(150) DEFAULT NULL, banner_file varchar(20) DEFAULT NULL, banner_code text, PRIMARY KEY ENGINE=InnoDB DEFAULT CHARSET=utf8; sniperscope tarafından 26/Eki/12 11:35 tarihinde düzenlenmiştir "Yer yuzunde hic bir pislik yoktur ki; altindan bir yahudi cikmasin" Adolf Hitler... "Turkiye de hicbir pislik yokturki altindan cemaat cikmasin" SniperScope "Nerede yavşak, hırsız varsa hepsi Allahçı" Fazil Say

O nasil olacak anlamadim. Bir post sadece bir kategoriye ait olur, ve onun alt kategorisi olur. Simdi, karsinda bir araba var, bu araba hem arac kategorisinde, hemi gemi, hemde ucak kateogirisinde. php - mysql ile ilgili bi makale yazdığımı düşün hocam, bu makale hem php hemde mysql kategorisinde çıkmalı mesela. zaten bunu kullanıcağım yapı bambaşka, soru rahat anlaşılsın diye bu şekilde post-kategori olayıyla sordum

selam beyler ncelikle tablo yapılarım aşağıdaki gibi : posts - categories ve post_category_relations diye üç tablom var, tahmin ediceğiniz gibi birinde postlar birinde kategoriler birinde post-kategori ilişkileri var. her bir postun birden fazla kategorisi olabilmesi için bu şekilde bir yapı tercih ettim mysql> describe post_category_relations;+ + + + + + +| Field | Type | Null | Key | Default | Extra |+ + + + + + +| relation_id | int(11) | NO | PRI | NULL | auto_increment || post_id | int(11) | NO | | NULL | || category_id | int(11) | NO | | NULL | |+ + + + + + +3 rows in set (0.01 sec) mysql> describe posts;+ + + + + + +| Field | Type | Null | Key | Default | Extra |+ + + + + + +| post_id | int(11) | NO | PRI | NULL | auto_increment || title | varchar(255) | YES | | NULL | || content | text | YES | | NULL | || date | datetime | YES | | NULL | || active | tinyint(1) | YES | | NULL | |+ + + + + + +5 rows in set (0.00 sec) mysql> describe categories;+ + + + + + +| Field | Type | Null | Key | Default | Extra |+ + + + + + +| cat_id | int(11) | NO | PRI | NULL | auto_increment || cat_name | varchar(255) | YES | | NULL | |+ + + + + + +2 rows in set (0.00 sec) Kullandığım sorgu şu şekilde amacım sadece kategori id si 2 olan postları çekmek olsun mesela, having le yapabildim sadece where falan kullanınca hata verdi sürekli, having like %% kullanınca da kategori id si 2 olanla 21 olanı ayıramıyorum, nettede adam gibi rnek bulamadım yardımlarınızı bekliyorum: SELECT posts. , (SELECT GROUP_CONCAT FROM categoriesLEFT JOIN post_category_relations ON post_category_relations. category_id = categories. cat_idWHERE post_category_relations. post_id = `posts`. post_idGROUP BY post_category_relations. post_id) AS category, (SELECT GROUP_CONCAT FROM categoriesLEFT JOIN post_category_relations ON post_category_relations. category_id = categories. cat_idWHERE post_category_relations. post_id = `posts`. post_idGROUP BY post_category_relations. post_id) AS cate_idFROM HAVING `cate_id` LIKE '%2%'LIMIT 0, 30

o zaman soyle yap WHERE c. cat_id = '2' OR c. cat_id = '3' "Yer yuzunde hic bir pislik yoktur ki; altindan bir yahudi cikmasin" Adolf Hitler... "Turkiye de hicbir pislik yokturki altindan cemaat cikmasin" SniperScope "Nerede yavşak, hırsız varsa hepsi Allahçı" Fazil Say

ara tablo olmadan şyle yaparsın, bi categoryIds kolonu oluştur. mesela hedele diye yazın olsun hem 1 id li hemde 2 id li kategoriye koyacaksın. bitwise operation ile yapabilirsin - xx yerde hata var. - ya aslında kod şyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...