|
|
|
| Доброго времени.
Помогите составить запрос. Есть 2 таблицы. Водной содержится post_id, tag_id во второй Id, header.
Надо как то выбрать все эти данные при этом, что бы Id по которому идет сортировка в ответе не был.
В таблице может быть несколько tag_id и post_id надо как то их все выбрать. Сделал выборку через tag_id, но запрос приходится прогонять через цикл, что бы достать все данные, может можно как то решить без цикла? сейчас работает, точнее не правильно работает так:
select tag.tag_id, tag.post_id, blog.header, blog.Id from post_tag as tag JOIN blog as blog on tag.post_id = blog.Id where tag.tag_id ='".$blogId."'
|
| |
|
|
|
|
|
|
|
для: Aidaho
(05.09.2011 в 12:22)
| | строка blog as blog наталкивает на мысль, что вы не ведаете что творите :)
дайте поля таблиц | |
|
|
|
|
|
|
|
для: Valick
(05.09.2011 в 12:51)
| | Да, практически на ощупь, не совсем понятна логика при сложных вопросах ибо не часто не приходится писать.
Ну так или иначе, вот структура баз Первая это post_tag, вторая blog
1 Id int(11) AUTO_INCREMENT
2 post_id int(11)
3 tag_id int(11)
|
1 Id int(11) AUTO_INCREMENT
2 header text
3 text longtext
|
| |
|
|
|
|
|
|
|
для: Aidaho
(05.09.2011 в 14:15)
| | не смотря на то что названия полей предельно просты и достаточно понятны, расскажите какая связь между этими таблицами, и в чем сущность каждой таблицы | |
|
|
|
|
|
|
|
для: Valick
(05.09.2011 в 15:06)
| | Связь по полям post_id и Id, в таблице блог хряняться записи, а в post_id теги к этим записям. | |
|
|
|
|
|
|
|
для: Aidaho
(05.09.2011 в 12:22)
| | >при этом, что бы Id по которому идет сортировка в ответе не был.
Просто не приводите его в списке SELECT.
>сейчас работает, точнее не правильно работает так:
А что нужно сделать? Как связаны таблицы друг с другом, по какому полю? | |
|
|
|
|
|
|
|
для: cheops
(05.09.2011 в 15:16)
| | Связанны таблицы между собой по полю post_id и Id.
Вытащить из базы все записи у которых есть таки же теги, что и у текущей, не учитывая текущую.
Мне все больше и больше кажется, что одним запросом это не реализовать. :( | |
|
|
|
|
|
|
|
для: Aidaho
(05.09.2011 в 15:25)
| | Так у нас есть две таблицы
post_tag
blog
>Вытащить из базы все записи у которых есть таки же теги, что и у текущей, не учитывая текущую.
В какой таблице хранятся тэги, и из какой таблицы извлекаются записи? Извлекаются похожие записи из таблицы blog, за исключением текущей? Если да, то может известен blog.Id текущей таблицы и стоит добавить blog.Id != $id_blog в WHERE-условие? Или я не совсем правильно понимаю ситуацию? | |
|
|
|
|
|
|
|
для: cheops
(05.09.2011 в 15:48)
| | тэги хранятся в таблице post_tag, а записи в blog.
Да, должны извлекаться все, записи с такими же тэгами, как у текущей за исключением текущей.
Известен параметр blog.Id.
А можно весь запрос, а то логику запроса так и не пойму. | |
|
|
|
|
|
|
|
для: Aidaho
(05.09.2011 в 15:53)
| | Я могу ошибаться (тут бы хорошо кусочек дампа иметь, чтобы поэксперементировать), но помоему запрос должен выглядеть следующим образом
SELECT
tag.tag_id,
tag.post_id,
blog.header,
blog.Id
FROM
post_tag AS tag
JOIN
blog AS blog
ON
tag.post_id = blog.Id
WHERE
tag.tag_id = '".$blogId."' AND
blog.Id <> '".$blogId."'
|
| |
|
|
|
|
|
|
|
для: cheops
(05.09.2011 в 16:06)
| | _ | |
|
|
|
|
|
|
|
для: cheops
(05.09.2011 в 16:06)
| | блин! точно, есть же хорошая фишка как: "<>"! Спасибо Вам большое! работает как надо ) | |
|
|
|