Herkese merhaba veritabanından veri çekmeye çalışırken bir sorunla karşılaştım şimdi benim veritabanımda motor_numarasi diye bir sütun var sitede filtreleme yaparken bende bu sütuna göre arama yapmak istiyorum fakat benim elimdeki yapı 2,6,7 şekilde geliyor ikisini karşılaştırmam gerekiyor.
veriatabanındaki veri: 1,2,3,4,5
elimdeki veri: 2,6,7
ben sadece eşleşenlerin gelmesini istiyorum
PHP SQL sorunu
3
●86
- 16-08-2020, 14:41:59Üyeliği durduruldumotor_numarasi sütunu;kete52 adlı üyeden alıntı: mesajı görüntüle
1
2
3
4
5
ve siz
2
6
7
arıyorsanız ORM kullanmıyorsanız RAW;
SELECT * FROM tablo_adi WHERE motor_numarasi IN (2,6,7)
motor_numarasi sütunu;
1,2,3,4,5 ve siz içinde;
2 ve 6 ve 7 olanları arıyorsanız prosedür ve sub query yazmalısınız. Eğer durum bu ise mysql versiyonunuzu iletirseniz ilgili sorguyu göndereyim. - 16-08-2020, 16:53:47Üyeliği durdurulduÇok zamanım yok daha temiz yazılabilir, " DECLARE var varchar(150) DEFAULT '2,6,7';" buradaki default sizin elinizdeki değişken. Sonuçta while ile 'SELECT * FROM tablo_adi WHERE FIND_IN_SET(2, motor_numarasi) != 0 AND FIND_IN_SET(6, motor_numarasi) != 0 AND FIND_IN_SET(7, motor_numarasi)' şeklinde bir query build ediliyor. Burada işin espirisi "FIND_IN_SET" fonksiyonu. Eğer java, python veya php gibi bir dil ile sorguyu oluşturmak isterseniz değişkeni explode edip sorguyu sizde hazırlayabilirsiniz. hızlıca şöyle;kete52 adlı üyeden alıntı: mesajı görüntüle

İhtiyacı olacaklar için FIND_IN_SET;
SELECT id, FIND_IN_SET('1', field) AS result FROM tablo_adi; -> tüm "," ile ayrılmış sütunları alır sonuçlarda 1 değerini arar SELECT * FROM tablo_adiwhere FIND_IN_SET('1',field) <> 0; -> ", " ile ayrılmış sütunlarda 1 değeri olanları alır
