[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Организовать теги к картинкам
Страницы: 1, 2
rooor
аа)) сори, увидел)
и ты считаешь это нормальным?
philya
Нет не будет, так как подстрока " 20," не равна " 2,". В моем варианте учитывается пробел перед числом, а затем запятая после него.

нет, но просто хочу узнать, что же будет быстрее, потому что правильным будет вариант Michael'a
rooor
ну ок) уболтал =)
каким образом будешь вытаскивать теги по этим id?
philya
собрал бы все id для текущей странице, запросом вытащил бы из базы соответствующие названия тэгов и расставил их к фото

SELECT `name` FROM tags WHERE id IN (SELECT tags FROM foto WHERE id = ID)

Вроде так, только этот запрос у меня НЕ РАБОТАЕТ, а почему не пойму. В документации по mysql он работает
rooor
потому что у тебя последний тег в поле тоже должен быть с запятой) тогда запрос получается таким:
SELECT `name` FROM tags WHERE id IN (2, 5, 10,)
philya
[QUOTE=rooor,17.11.2012 - 20:45] потому что у тебя последний тег в поле тоже должен быть с запятой) тогда запрос получается таким:
SELECT `name` FROM tags WHERE id IN (2, 5, 10,)


фиг его знает, но когда я пишу так:
SELECT `name` FROM tags WHERE id IN (2, 3)

запрос срабатывает, а если так:
SELECT `name` FROM tags WHERE id IN (SELECT tags FROM foto WHERE id = ID)
- нет
rooor
у тебя что находится в поле tags? вот прям как есть скопируй его сюда
philya
2, 3
rooor
поехали сначала? :)
Цитата
2. UPDATE `foto` SET `tags`= REPLACE(foto.tags, ' 2,', ' 3,');

не сработает на последнем теге в поле, т.к. по логике он должен быть с запятой, а у тебя - без, это раз.
Если последний тег будет с запятой, то этот запрос сработает, но не сработает другой запрос:
SELECT `name` FROM tags WHERE id IN (SELECT tags FROM foto WHERE id = ID)

потому что WHERE id IN(1, 2, 3,) и т.д. будет оканчиваться запятой, это два
SELECT `name` FROM tags WHERE id IN (SELECT tags FROM foto WHERE id = ID)

откуда ID ? это три =)

внимание вопрос... этот гемор тебе ещё не надоел? т.е. я тебя не убедил?
philya
Цитата
потому что WHERE id IN(1, 2, 3,) и т.д. будет оканчиваться запятой, это два

так не заканчивается запятой:
SELECT `name` FROM tags WHERE id IN (SELECT TRIM(TRAILING ', ' FROM (SELECT tags FROM foto WHERE id = ID)))

но все равно возвращается только одно первое значение
ID - это id изображения.
Цитата
т.е. я тебя не убедил?

Да уже давно убедил :)
rooor
Ну тогда надо вернуться к основному вопросу топика и замерить скорость выполнения запросов smile.gif чтоб расставить все точки над i
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.