Mysql virgülle ayrılmış Mulitple değeri aramak için nasıl

4 Cevap php

Nasıl virgülle ayırarak birden çok değer aramak.

ex:

table name : searchTest

id    name      keyword

1     trophy1   test1,test2,test3

2     trophy2   test2,test5

Puan:

  1. I test2 ararsanız sonuçlar trophy1 ve trophy2 hem ekran olmalıdır.

  2. I trophy1 ararsanız o trophy1 sonucu olmalıdır.

Nasıl bu sorunu çözmek için.

şimdiden teşekkürler

4 Cevap

Sen gibi kullanabilirsiniz.

select * from searchTest where keyword like '%test2%'

% Bir joker olduğu.

Ben burada, veri yapısı doğru değil oldukça, söyleyebilirim.

Bazı virgülle ayrılmış biçimi kullanarak bir alanda çeşitli değerleri depolamak için daha iyi bir çözüm olabilir, ama üç tablo kullanmak, bu şekilde tanımlanmıştır:

  • searchtest
    • id
    • name
  • keywords
    • id
    • word
  • keywords_searchtest
    • id_keyword
    • id_searchtest


With that, searching for entries in searchtest that have specific keywords would be as simple as :

select searchtest.*, keywords.*
from searchtest
    inner join keywords_searchtest on keywords_searchtest.id_searchtest = searchtest.id
    inner join keywords on keywords.id = keywords_searchtest.id_keyword
where keywords.word = 'test2'


And, additionnaly, you'd have to search for searchtest entries with a specific name :

select *
from searchtest
where name = 'trophy1'

Bu anahtar kelimeler ayrı bir tabloda saklanmalıdır

select * from searchTest where keyword  LIKE 'test2' or LIKE '%,test2' or LIKE 'test2,%'

i sorguda yukarıdaki kullanarak bu yapmış çalışacak