Merhabalar,
PHP'de kafama takılan ve sizlerle mantık yürütmek veya bu konuda tecrübeli olan arkadaşların bilgisini almak istediğim bir konu var.
Veritabanımızda A ve B olmak üzere 2 tane tablomuz var.
A TABLOSU
+---------+-------+
| id | tablo_b_id |
+---------+-------+
| 1 | 2 |
+----------------+
B TABLOSU
+---------+-------+
| id | icerik |
+---------+-------+
| 1 | Orhan |
| 2 | Bilge |
+----------------+
Bu şekilde iki tablo arasındaki ilişkiyi sorguda "tablo_b_id" kolonunu ve B tablosundaki "id" kolonunu eşleştirerek neticeyi elde edebiliyorum.
Ama varsayalım ki, tablo_b_id kolonunda birden fazla değer var. O kolonda bir json datası düşünün veya başka bir yöntemle de olabilir; şöyle düşünelim..
A TABLOSU
+---------+-------+
| id | tablo_b_id |
+---------+-------+
| 1 | 2,3,4,5,6 |
+----------------+
Gördüğünüz gibi birden çok id oldu. Şimdi A tablosunu döngüye sokup döngü içerisinde tablo_b_id kolonundaki idleri tek tek sorguya soksam ağırlık yapar diye düşünüyorum. Peki böyle durumlarda çözüm nedir?
Konuyla ilgili bilgisi olan paylaşırsa hem bana hem de bu konuda bilgiye ihtiyacı olanlar faydalanır.
İyi çalışmalar dilerim hepinize.
Mysql ID Bağlantıları Hk.
3
●363
- 14-01-2016, 10:13:06
- 14-01-2016, 19:10:22Like bu sorunu çözmez , id değerleri 11 geldiğinde 1 sonucuda true döneceği için doğru sonuçlar veremez çözüm regex'i sorgularınıza dahil etmekte. Verdiğiniz örnekteki id değerlerini ;OrhanBilge adlı üyeden alıntı: mesajı görüntüle
SELECT * FROM makale where kat_id REGEXP '[[:<:]]1[[:>:]]'
benzeri bir regexp sorgusu ile listeleyebilirsiniz... - 15-01-2016, 01:16:09@OrhanBilge; bu iki tablodan tam olarak nasıl bir çıktı elde etmek istiyorsunuz.
Bunu şu şekilde örneklersek eğer; B tablonuz kategori ve A tablonuzde içerik tablosu diyelim ve bir içeriğin birden fazla kategorisi olabilir bu sebeple A tablosundaki tablo_b_id alanına 1,2,3,4 diyerekten virgülle kategori idlerini tutuyorsunuz.
Select * From a Where FIND_IN_SET(3, tablo_b_id) > 0
şeklindeki bir sorguyla a tablosundan, tablo_b_id kolonunda 3 idsi olan kayıtları çekebilirsiniz.