|
|
|
| В принципе, я хотел бы для начала понять, как это осуществляется (но без записи всех тегов через запятую, а потом explode() :).
От собратьев слышу постоянно про JOIN, но даже в инструкциях для чайников не могу понять, как же его применять, что уж говорить про мануал.
Итак. допустим, у нас есть табличка:
pid | text
где pid - уникальный идентификатор поста, text - его текст. Все минималистично. Соответственно, у каждого поста может быть от 1 до n тегов.
Как следует дополнить эту табличку, и какие дополнительные таблицы надо создать, дабы можно было по-умному добавлять и доставать теги? Какие тогда будут запросы?
Заранее благодарю :) | |
|
|
|
|
|
|
|
для: alexander95
(24.01.2012 в 03:21)
| | Нужно создать еще две таблицы. Одну таблицу вида
id_pid | id_tag (Table 2)
где id_pid - уникальный идентификатор поста, а id_tag - уникальный идетнификатор тега
а вторую вида
id_tag | text_tag (Table 3) (ваша Table 1)
где id_tag - уникальный идетнификатор тега, а text_tag - текст тега
Как все это достать при помощи JOIN я не могу точно сказать, так как у меня на JOIN аллергия, но могу предложить обычный способ. Идете в таблицу 2 и достаете все id тегов, принадлежащих к id поста.
SELECT id_tag FROM T2 WHERE id_pid IN (здесь id вашей статьи)
|
Потом идете в таблицу 3 и на все полученные предыдущим запросом id_tag берете сами слова
SELECT text_tag FROM T3 WHERE id IN (implode(',', $результат работы предыдущего запроса- массив id`шников))
|
Оба запроса можно объединить в один. Или даже все три запроса можно объединить в один. Третий, это выбор информации о посте.
Все уже встают, а я еще не ложился, так что могут быть неточности)
[поправлено модератором] | |
|
|
|