Подскажите, а то плохо чувствую себя, голова не варит вообще
![unsure.gif](http://phpforum.ru/html/emoticons/unsure.gif)
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 3 минуты, 9 секунд (15.10.2009 - 11:44) glock18 написал(а):
отдельная таблица для тегов. еще одна для связей с постами.
так как сохранение в таком случае достаточно геморное, то использую обычно хранимую процедуру для парсинга строки тегов и рассовывания записей в таблицы. зато можно делать любые выборки какие вздумается.
так как сохранение в таком случае достаточно геморное, то использую обычно хранимую процедуру для парсинга строки тегов и рассовывания записей в таблицы. зато можно делать любые выборки какие вздумается.
Спустя 12 минут, 18 секунд (15.10.2009 - 11:56) Crэker написал(а):
Цитата (glock18 @ 15.10.2009 - 09:44) |
отдельная таблица для тегов. еще одна для связей с постами. так как сохранение в таком случае достаточно геморное, то использую обычно хранимую процедуру для парсинга строки тегов и рассовывания записей в таблицы. зато можно делать любые выборки какие вздумается. |
Спасибо:)
Спустя 6 часов, 26 минут, 57 секунд (15.10.2009 - 18:23) Crэker написал(а):
Цитата (glock18 @ 15.10.2009 - 09:44) |
отдельная таблица для тегов. еще одна для связей с постами. так как сохранение в таком случае достаточно геморное, то использую обычно хранимую процедуру для парсинга строки тегов и рассовывания записей в таблицы. зато можно делать любые выборки какие вздумается. |
Все же никак.
tegs
teg_id teg_name tag_summ
А как организовать вторую таблицу связку? не могу увязать подсчет количества и отображение тегов в каждом посте
Спустя 8 минут, 20 секунд (15.10.2009 - 18:31) Crэker написал(а):
если сразу хранить теги к посту через запятую, то ни о каком подсчете речи и не идет. а если пост ид_тега счетчик, то к каждому посту придется в лучшем случае запрос делать для тегов
Спустя 8 минут, 44 секунды (15.10.2009 - 18:40) glock18 написал(а):
еще таблица
tag2post
tagId postId
кто-то че-то накалякал у себя в тегах. ты кидаешь строку куда-нибудь (я кидал хранимой процедуре, чего и тебе советую). она парсится, пишется все в базу соответственно. после этого у тебя в базе должны появиться, до сель не существовавшие, теги, а в tag2post связи переданных тегов с постом. ну и если счетчик ввел, то его у каждого тега инкрементировать надо.
tag2post
tagId postId
кто-то че-то накалякал у себя в тегах. ты кидаешь строку куда-нибудь (я кидал хранимой процедуре, чего и тебе советую). она парсится, пишется все в базу соответственно. после этого у тебя в базе должны появиться, до сель не существовавшие, теги, а в tag2post связи переданных тегов с постом. ну и если счетчик ввел, то его у каждого тега инкрементировать надо.
Спустя 11 минут, 42 секунды (15.10.2009 - 18:52) Crэker написал(а):
Цитата (glock18 @ 15.10.2009 - 16:40) |
еще таблица tag2post tagId postId кто-то че-то накалякал у себя в тегах. ты кидаешь строку куда-нибудь (я кидал хранимой процедуре, чего и тебе советую). она парсится, пишется все в базу соответственно. после этого у тебя в базе должны появиться, до сель не существовавшие, теги, а в tag2post связи переданных тегов с постом. ну и если счетчик ввел, то его у каждого тега инкрементировать надо. |
Я не совсем о том, как парсить я и сам знаю.
При такой организации бд можно подсчитать кол-во тегов во всем сервисе, но не в отдельном аккаунте. и главное, как выводить теги в постах? для каждого поста по запросу что ли создавать?
Спустя 1 час, 1 минута, 11 секунд (15.10.2009 - 19:53) glock18 написал(а):
Цитата |
При такой организации бд можно подсчитать кол-во тегов во всем сервисе, но не в отдельном аккаунте |
если аккаунт == юзер, то можно добавить user2tag.только смысл?
и главное, как выводить теги в постах? для каждого поста по запросу что ли создавать?
можно join + group by + group_concat вместе с самими постами, либо выводить отдельным запросом. только не для каждого поста. одного на все посты хватит за глаза.
Спустя 9 минут, 29 секунд (15.10.2009 - 20:02) Crэker написал(а):
Цитата (glock18 @ 15.10.2009 - 17:53) | ||
если аккаунт == юзер, то можно добавить user2tag.только смысл? и главное, как выводить теги в постах? для каждого поста по запросу что ли создавать? можно join + group by + group_concat вместе с самими постами, либо выводить отдельным запросом. только не для каждого поста. одного на все посты хватит за глаза. |
Никак ты не достанешь теги вместе с постом, только если они в одной строке будут. а потом после запроса эксплодом разбивать.
SQL |
SELECT `post_id`,`post_title`,`postcontent`,`post_comments_summ`,`post_date` FROM `posts` WHERE post_owner_diary = $id ORDER BY `post_id` DESC |
разве что подзапрос делать,
SQL |
SELECT `teg_id`, FROM `posts` WHERE post_id = `post_id` |
и уже к подзапросу привинтить джоин, чтобы по иду достать сам тег. но это к каждому посту запрос получается.
Спустя 16 минут, 13 секунд (15.10.2009 - 20:19) glock18 написал(а):
Цитата |
Никак ты не достанешь теги вместе с постом, только если они в одной строке будут. а потом после запроса эксплодом разбивать. |
Да ладно?
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
таблицы:
post
post2tag
tag
Вот раз:
SQL |
select p.*, group_concat(tag.name separator ',') as tags, count(*) as tagCount from post p inner join post2tag pt on p.id = pt.postId inner join tag t on pt.tagId = t.id where p.id = <whateverYouWant> group by p.id |
Вот два:
выбираешь все теги. собираешь id в массив или строку для in. выбираешь теги, для этих постов.
первый вариант так же, как и второй, подходит для выборки списка постов.
Спустя 19 минут, 6 секунд (15.10.2009 - 20:38) Крекер написал(а):
Сложноватый для меня запрос... завтра с компа буду по косточкам разбирать
Спустя 21 час, 4 минуты, 31 секунда (16.10.2009 - 17:42) Crэker написал(а):
Цитата (glock18 @ 15.10.2009 - 18:19) | ||||
Да ладно? ![]() таблицы: post post2tag tag Вот раз:
Вот два: выбираешь все теги. собираешь id в массив или строку для in. выбираешь теги, для этих постов. первый вариант так же, как и второй, подходит для выборки списка постов. |
SQL |
SELECT `post_id` , `post_title` , `post_full_content` , `post_comments_summ` , `post_date` , CONVERT( GROUP_CONCAT( `_teg_id` ) USING utf8 ) AS `_post_id` , `teg_name` FROM `be_posts` LEFT JOIN `be_posts__tegs` ON `post_id` = `_post_id` LEFT JOIN `be_tegs` ON `_teg_id` = `teg_id` WHERE `post_owner_diary` =1 GROUP BY `post_id` |
сумашедший запрос, к тому же получается так, что выбирается только один тег вместо многих, как исправить?
Спустя 14 минут, 9 секунд (16.10.2009 - 17:56) glock18 написал(а):
ты group_concat по имени забыл (обрати внимание, что у тебя _post_id содержит все три id
). вопрос а зачем на лету конвертировать в утф8 ? таблица не в утф?
Запрос кстати не сумасшедший... простенький такой
у меня по работе проект сейчас, так о таких запросах только мечтать остается...
если запрос не выбирает справочные данные, то по-любому занимает 1-2 экрана (ну если не лепить все в кучу).
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Запрос кстати не сумасшедший... простенький такой
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 2 минуты, 15 секунд (16.10.2009 - 17:59) Crэker написал(а):
Цитата |
в утф8 ? таблица не в утф? |
если ты доки не читал, то функция работает только с буквенными значениями. а у меня цифры, эта функция преобразовывает их в буквы
Спустя 1 минута, 48 секунд (16.10.2009 - 18:00) Crэker написал(а):
Цитата |
ты group_concat по имени забыл |
напиши пожалуйста как запрос должен выглядеть, я не понял, и полдня уже воюю
Спустя 17 минут, 20 секунд (16.10.2009 - 18:18) glock18 написал(а):
Цитата |
если ты доки не читал, то функция работает только с буквенными значениями. а у меня цифры, эта функция преобразовывает их в буквы |
аа, это типа еще один вариант "приведения типа". читал доки, конечно. только видимо ты читал невнимательно, потому как convert и cast - две функции, которые могут привести к типу. и не таким способом, $i += 0, !!$i и подобные элементы хардкодинга.
Цитата |
напиши пожалуйста как запрос должен выглядеть, я не понял, и полдня уже воюю |
SQL |
SELECT `post_id`, `post_title`, `post_full_content`, `post_comments_summ`, `post_date`, GROUP_CONCAT( `_teg_id` ) AS `post_tag_ids`, GROUP_CONCAT(`teg_name`) AS `post_tags` FROM `be_posts` LEFT JOIN `be_posts__tegs` ON `post_id` = `_post_id` LEFT JOIN `be_tegs` ON `_teg_id` = `teg_id` WHERE `post_owner_diary` =1 GROUP BY `post_id` |
приведение типа там ни к чему.
Спустя 6 минут, 4 секунды (16.10.2009 - 18:24) Crэker написал(а):
Цитата |
приведение типа там ни к чему. |
еще как к чему, иначе вместо пост_тегс_ид получится BLOB - 5 bytes
Спустя 3 минуты, 14 секунд (16.10.2009 - 18:27) Crэker написал(а):
вот о чем я
Спустя 2 минуты, 35 секунд (16.10.2009 - 18:30) glock18 написал(а):
Crэker
я понимаю, так ведь blob это такой же тип данных, как и любой другой. честно говоря, не уверен, конечно, но думаю, что этот блоб легко прочитается. blob везде так показывается, но ты пробовал в php посмотреть что приходит? ведь:
1,2,3 - 5 байт
я понимаю, так ведь blob это такой же тип данных, как и любой другой. честно говоря, не уверен, конечно, но думаю, что этот блоб легко прочитается. blob везде так показывается, но ты пробовал в php посмотреть что приходит? ведь:
1,2,3 - 5 байт
Спустя 6 минут, 2 секунды (16.10.2009 - 18:36) Crэker написал(а):
Цитата |
но ты пробовал в php посмотреть что приходит? |
в php выводит 1,2,3 , но не сами теги
Спустя 2 минуты, 54 секунды (16.10.2009 - 18:39) Crэker написал(а):
ой, извиняюсь, не заметил кое-чего
ну спасибо, здоровски помог:)
ну спасибо, здоровски помог:)
Спустя 24 минуты, 50 секунд (16.10.2009 - 19:03) glock18 написал(а):
Цитата |
ой, извиняюсь, не заметил кое-чего ну спасибо, здоровски помог:) |
аха
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
_____________
Если есть желание стать соразработчиком инновационного сервиса онлайн дневников, с нетерпением жду вас в личке)