2010-07-15 6 views
0

Привет им пытаются использовать Sql в MySql для сортировки некоторые значения, и это то, что у меня есть:Sql Заявление строительство

Выберите из моей таблицы строки, где значение статуса столбца равняется онлайн и значение в тегах столбцов равно музей, закажите их по имени и в порядке возрастания.

SELECT * 
    FROM tech 
WHERE `STATUS` = 'online' 
    AND `TAGS` = 'museum' 
ORDER BY NAME ASC 

Однако то, что мне нужно это:

Выберите из моей таблицы строки, где значение в столбце Статус равняется онлайн и есть это значение в тегах столбцов, равно музей, заказать их по имени и в порядке возрастания.

Что я имею в виду, так это то, что прямо сейчас в моем БД мои теги столбцов имеют только одно значение для каждой строки, что не очень полезно для использования в качестве тегов. Я хочу изменить его так, чтобы значение в нем вместо «музея» было «музейным 3d-программированием» и SQL-меткой для определенного «слова» в этом строчном значении.

Можно ли это сделать?

+0

полнотекстового поиска (FTS) быстрее и эффективнее для текстового поиска/сопоставления, чем когда-либо. –

ответ

4

Попробуйте

SELECT * 
    FROM tech 
WHERE `STATUS` = 'online' 
    AND `TAGS` like '%museum%' 
ORDER BY NAME ASC 
+0

Rigth on spot thanks;) – Marvin

1

Похоже, вы хотите использовать LIKE:

SELECT * 
    FROM tech 
    WHERE `STATUS` = 'online' 
     AND `TAGS` LIKE '%museum%' 
    ORDER BY NAME ASC 
+0

Спасибо, вот и все! – Marvin

+0

@Marvin обязательно отметьте это как ответ, если он сработает для вас. – ahsteele

+0

Я могу отметить только один правильный ответ, мне жаль, я проголосовал, но сначала ответил Хайме. – Marvin

1

Вы просто должны использовать LIKE и %. См. this site.

Так что-то вроде этого

..AND `TAGS` like '%museum%'... 
1

`Попробуйте это:

SELECT * 
    FROM Tech 
WHERE `STATUS` = 'online' 
    AND `TAGS` LIKE '%Museum%' 
ORDER BY Name ASC 
1

Вместо создания нескольких меток в одном столбце, вы должны рассмотреть возможность разделения тегов прочь в другую таблицу. Это называется database normalization. Это упростит работу с вашими данными и позволит избежать выполнения поисковых запросов LIKE, которые могут быть очень медленными.

Не так давно я ответил на очень похожий вопрос и включил образец структуры таблицы, некоторые данные и некоторые примерные запросы. Приведенный пример имеет три таблицы: item, item_tag и tag. item содержит, ну, элементы, и tag содержит теги. item_tag - junction table. Это помогает создавать отношения «многие ко многим» между двумя другими таблицами: каждый элемент может ассоциироваться со многими тегами, и каждый тег может быть связан со многими элементами. Стол узел расположен между двумя, и содержит список пар элемент-тегов:

Will this (normalised) database structure permit me to search by tags as I intend?

Вы также должны взглянуть на это MySQL учебник:

An Introduction to Database Normalization

+0

Спасибо, это звучит что-то, над чем я действительно должен учиться. Я слышал, что этот термин был брошен, но пока не нашел его. – Marvin

Смежные вопросы