2016-03-20 16 views
1

Benim veritabanı sql mevcuttur ve DB:MySQL hiçbir satır döndürür ancak tüm kapalı kelimeler

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 

CREATE TABLE IF NOT EXISTS `oc_artists_tags` (
    `artists_tag_id` int(11) NOT NULL AUTO_INCREMENT, 
    `artist_id` int(11) NOT NULL, 
    `artist_tag` varchar(50) NOT NULL, 
    PRIMARY KEY (`artists_tag_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=203 ; 

INSERT INTO `oc_artists_tags` (`artists_tag_id`, `artist_id`, `artist_tag`) VALUES 
(1, 113, 'ke$ha'), 
(2, 113, 'kesha'), 
(3, 113, 'keshha'), 
(4, 113, 'ke'), 
(5, 113, 'ha'); 

Ve sql geçerli:

SELECT * FROM `oc_artists_tags` 
WHERE `artist_tag` LIKE '%ke$ha%' 
    AND `artist_tag` LIKE '%kesha%' 
    AND `artist_tag` LIKE '%keshha%' 
    AND `artist_tag` LIKE '%ke%' 
    AND `artist_tag` LIKE '%ha%' 

Ben bu var bu kodu çalıştırdığınızda:

MySQL returned an empty result set (i.e. zero rows). (Query took 0.0005 sec)** 

Neden? Sorun nerede?

+1

: AND kullanarak

SELECT * FROM 'oc_artists_tags' WHERE 'artist_tag' LIKE '%ke$ha%' OR 'artist_tag' LIKE '%kesha%' OR 'artist_tag' LIKE '%keshha%' OR 'artist_tag' LIKE '%ke%' OR 'artist_tag' LIKE '%ha%' 

demek gibi bir "OR", "OR", "OR" çünkü "artist_tag" bu şeylerin hepsini aynı anda yapamaz, ancak '% ke $ ha%' 'OR' '% kesha%' 'etc vb olabilir – RiggsFolly

cevap

2

Sen yüklemler OR gerekir: Bana ke$have kesha gibi gibi bir etikete sahip kayıtları almak vb

Demo here

+0

Hayır sql'm doğru. 5 kayıt var. –

+0

@DilaraAliyeva Evet, ancak bunların hiçbiri "WHERE" ifadesinde belirttiğiniz dizelerin ** tümünü ** eşleşmiyor. –

+0

Evet, anladım! Teşekkür ederim! –

İlgili konular