Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

SQL 'de in_array yapmak


Öne çıkan mesajlar

Mesaj tarihi:
Selam ben bu soruyu sordum gibi geldi ama aradım taradım bulamadım. Dejavu oldum sanırım.

Şimdi gelişmiş arama yapıyorum da şöle bi sorun var. Kişinin sql'de kayıtlı seçenekleri var; "1,2,3,4,5" seçimlerine göre aynen böyle kaydediliyor. Gelişmiş aramada ise;

Seçenek 1
Seçenek 2

Olarak listeleniyor, şimdi bu sql'de in_array gibi birşey yapmanın olanağı var mıdır ?
Mesaj tarihi:
Oda tam verimli çalışmıyor ki. Mesela 2 kişi olsun. Bunların seçimleri aşağıdaki gibi olsun;

Birinci kişi: 1,2
İkinci kişi: 2

sütun IN(2,3)

Yaptıgımda sadece ikinci kişi listeleniyor. Ama birinci kişininde listelenmesi lazım
Mesaj tarihi:
Ya şimdi binlerce seçim var. Hepsini Foreach ile böl tek tek kontrol yazdır kasar diye düşündüm. Aklımda kalan seçenek sayısı 500 mesela adam 200 tanesini işaretlese

AND x= OR x= OR x= AND y= OR y= OR y= ...... diye gidicek. Kolay ve daha sağlıklı bir yolu olmalı
Mesaj tarihi:
@nameless

Onun için FULLTEXT yapmak lazımmış birde açıkcası Mysql'e okadar hakim değilim.

@sharky

=) hehe

@Brigand

O değişin şekilde olmaz. Neden olmaz mesela aranacak kişinin seçimleri şu şekildedir; 2,6,8. Arayan kişi ise şunları seçmiştir; 2,4,5,6,7,8. Böyle oldugu zamanda:

select * from table where x = '2,4,5,6,7,8' olur aranan kişinin olayını bitirir.

Başka bir yolu yok mu ya püff :(
Mesaj tarihi:
aslinda bunun "kolay ve daha saglikli bir yolu" veritabaninda boyle tercihleri ayri bir cross reference tablosunda tutmaktir.

bu haliyle senin arama yapmak istedigin alan bir metin, ve sen metinsel arama yapmak istiyorsun. aradigin da word by word degil, expression search. onu da regexp ile yapabilirsin.
Mesaj tarihi:
Ulan hep buraya yazdığımda buluyorum ben cevapları =)

http://www.brainbell.com/tutorials/MySQL/Using_MySQL_Regular_Expressions.htm şurda baya detaylı anlattım eleman.

$array = implode('|',$gelen);

WHERE sutun REGEXP '$array'

Yaptım ve şimdilik sorun görünmüyo

---

Yok ya buda yememiş. 10 ile 1 'i aynı kefeye koyuyo
Mesaj tarihi:
zilyon tane çözüm sunuldu kullanmıyosun hiçbirini

en son benim yazdığım mesela tam istediğini yapar senin

madem illa kendin arayacan sana sunulan çözümleri beğenmiyon niye buraya yazıyon demezler mi adama
Mesaj tarihi:
Brigand said:
en son benim yazdığım mesela tam istediğini yapar senin


Brigand said:

veritabanında 1,2,5 diye değil ,1,2,5, diye tut

select * from table where x like '%," . implode(",%' or x like '%," , $arr) . ",%'

;)


Pluton said:
Onuda düşündümde sistemin nerdeyse %90 'ı bitti hepsini değiştirmek ölüm şimdi :D


Sonuç olarak dediklerinizin hepsini denedim ve denenemeyecek kadar geç kaldıklarımıda denemedim tabi ki.
Mesaj tarihi:
konuyu 17 ocakta açmışın

bugün 21 ocak. isterse %100'ü bitsin 4 günde yaptığın şeyi rahatça değiştirbilirsin.

ondan biraz uğraş uyarla sistemini. her zaman tam istediğin gibi çözümler bulunmaz, herşey önümüze hazır gelmez.
Mesaj tarihi:
@Brigand

Şimdi Kasımdan beri varolan bir proje ve ordaki boşulukta o aradaki zamanın yolda geçmiş olmasıdır. Neyse açıklama neden yaptıysam anlamadım.

Ayrıca o senin deiğin olayı yapana kadar FIND_IN_SET işimi görüyor ama dediğim gibi "FIND_IN_SET() OR FIND_IN_SET() OR .... OR FIND_IN_SET()" yaptırmak istemiyorum açıkcası 300 seçeneği işaretlese sen düşün artık uzunlugu

@Mum_Chamber

Regex az biraz biliyorum ama mysql'in REGEXP işlevi ve olayın tırtlığı beni deli etti 2.5 saattir bir şey bulamadım ona yanıyorum
×
×
  • Yeni Oluştur...