çoklu kategoriye göre veri listeleme sorunu
Merhabalar,
kategoriler tablom:
ID | k_adi | k_id |
---|---|---|
1 | Enerji | 1 |
2 | Teknoloji | 2 |
3 | Mekanik | 3 |
4 | Robot | 4 |
yazilar tablom:
ID | kategori_id | yazi_baslik |
---|---|---|
1 | 1,3 | deneme 1 |
2 | 2,4 | deneme 2 |
3 | 1, 3, 4 | deneme 3 |
4 | 2 | deneme 4 |
Verileri normalde bu şekilde çekiyorum:
("yazilar where kategori_id=$k_id","","","ORDER BY ID DESC")
Böyle yazınca sadece yazı başlığım (deneme 1) sadece bir kategoride (Enerji) görünüyor. Diğer kategorinin (Mekanik) listesinde görünmüyor.
Explode ile parçalamaya çalıştım:
("yazilar where explode(',',kategori_id)=$k_id","","","ORDER BY ID DESC")
Bu seferde tabloda veri yok olarak dönüyor.
kategori_id yi nasıl parçalayıp $k_id ile eşleştirebilirim.
Birden fazla listede nasıl görünmesini sağlarım.
Örneğin: deneme 1 yazısı hem Eneji hem Mekanik kategorisinin listesine girmeli.
virgül ile ayırmak yerine başka bir tablo oluşturup çoğa çok ilişki kurmak daha mantıklı olacaktır.
Örnek tablo şeması:
https://dbdiagram.io/d/60f555684ed9be1c05d297b7
bu mantıkla örneğim 3 numaralı yazıya ait kategorileri görmek istersen:
select * from yazi_kategori where yazi_id=3
aynı mantıkla 5 numaralı kategorideki yazıları listelemek istersen:
select * from yazi_kategori where kategori_id=5
şeklinde sorgu yazabilirsin.