• 16-08-2020, 14:27:42
    #1
    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
  • 16-08-2020, 14:41:59
    #2
    Üyeliği durduruldu
    kete52 adlı üyeden alıntı: mesajı görüntüle
    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
    motor_numarasi sütunu;
    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, 14:45:44
    #3
    mysql sürümü 5.6.43
  • 16-08-2020, 16:53:47
    #4
    Üyeliği durduruldu
    kete52 adlı üyeden alıntı: mesajı görüntüle
    mysql sürümü 5.6.43
    Ç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;




    İ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