Question

I was playing around with Sakila and I ran across the actor_info view and one of its columns is film_info which is a detail of all the movies one actor has worked in. For example a query would be:

select * from actor_info;
# actor_id | first_name | last_name | film_info
    1      | PENELOPE   |   GUINESS |  Animation: ANACONDA CONFESSIONS; Children: LANGUAGE COWBOY; Classics: COLOR PHILADELPHIA, WESTWARD SEABISCUIT; Comedy: VERTIGO NORTHWEST; Documentary: ACADEMY DINOSAUR; Family: KING EVOLUTION, SPLASH GUMP; Foreign: MULHOLLAND BEAST; Games: BULWORTH COMMANDMENTS, HUMAN GRAFFITI; Horror: ELEPHANT TROJAN, LADY STAGE, RULES HUMAN; Music: WIZARD COLDBLOODED; New: ANGELS LIFE, OKLAHOMA JUMANJI; Sci-Fi: CHEAPER CLYDE; Sports: GLEAMING JAWBREAKER

So I'd like to make a selection of actors who have worked in documentaries or animation but i don't know if this is possible. Sorry if the question is too basic. Thanks!

Was it helpful?

Solution

WITHOUT INDEXING

SELECT * FROM actor_info
WHERE film_info LIKE '%Animation%' OR film_info LIKE '%Documentary%';

or

SELECT * FROM actor_info
WHERE LOCATE('Animation',film_info)>0
OR LOCATE('Documentary',film_info)>0;

WITH INDEXING

Create a FULLTEXT index on film_info

ALTER TABLE actor_info ADD FULLTEXT (film_info);

Query using the FULLTEXT index

SELECT * FROM actor_info
WHERE MATCH (film_info) AGAINST ('+Animation*' IN BOOLEAN MODE)
UNION
SELECT * FROM actor_info
WHERE MATCH (film_info) AGAINST ('+Documentary*' IN BOOLEAN MODE);
Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top