|
|
|
| Можно ли сделать такой вложенный запрос?
(*если да то как))))
UPDATE 'posts' SET 'forum_id' =4 WHERE (SELECT * FROM 'topics' WHERE 'forum_id' =4)
То есть всем постам которые находятся в топиках, которые расположенны в форуме #4 присвоить 'forum_id' =4
Зарание спасибо. | |
|
|
|
|
|
|
|
для: Yakor
(12.05.2006 в 02:06)
| | как-то так
UPDATE 'posts' SET 'forum_id' =4 WHERE post_id IN (SELECT post_id FROM 'topics' WHERE 'forum_id' =4)
|
| |
|
|
|
|
|
|
|
для: Loki
(12.05.2006 в 09:35)
| | Выдает ошибку... :(((
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''posts' SET 'forum_id' =4 WHERE post_id IN (SELECT post_id FROM
|
| |
|
|
|
|
|
|
|
для: Yakor
(12.05.2006 в 13:02)
| | Здесь имеется ввиду запрос
UPDATE posts SET forum_id =4 WHERE post_id IN (SELECT post_id FROM topics WHERE forum_id =4)
|
PS У вас кстати MySQL какой версии? | |
|
|
|
|
|
|
|
для: cheops
(12.05.2006 в 13:06)
| | Тоже не работает... выдает то же самое
MySQL 4.0.24 | |
|
|
|
|
|
|
|
для: Yakor
(12.05.2006 в 13:58)
| | Вложенные запросы, кстати, на этой версии не работают, они появились начиная с MySQL 4.1.0. | |
|
|
|
|
|
|
|
для: cheops
(12.05.2006 в 17:08)
| | Вложенные запросы и на высших версиях кушают ресурсы как будьте нате. По сравнению с соединениями во всяком случае. Особенно когда внутренний запрос нужно повторять для каждой строчки внешнего. | |
|
|
|
|
|
|
|
для: Trianon
(12.05.2006 в 17:27)
| | Согласен. Единственное их преимущество - их просто составлять - и возможность использования NOT IN - при объединении нельзя получить записи, которые не вошли в объединение, а иногда нужно. | |
|
|
|
|
|
|
|
для: cheops
(12.05.2006 в 17:47)
| | При соединении замечательно получаются записи, которые не вошли в соединение. Если сделать его внешним. LEFT JOIN . Или @= если без join, в терминах старого оракла. Последнее, правда, mysql врядли съест. | |
|
|
|
|
|
|
|
для: Yakor
(12.05.2006 в 02:06)
| | какова структура таблиц posts и topics ? | |
|
|
|
|
|
|
|
для: Trianon
(12.05.2006 в 10:16)
| | phpBB ...
Структура таблицы 'bb_posts'
CREATE TABLE 'bb_posts' (
'post_id' mediumint(8) unsigned NOT NULL auto_increment,
'topic_id' mediumint(8) unsigned NOT NULL default '0',
'forum_id' smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY ('post_id'),
KEY 'forum_id' ('forum_id'),
KEY 'topic_id' ('topic_id'),
)
|
Структура таблицы 'bb_topics'
CREATE TABLE 'bb_topics' (
'topic_id' mediumint(8) unsigned NOT NULL auto_increment,
'forum_id' smallint(8) unsigned NOT NULL default '0',
PRIMARY KEY ('topic_id'),
KEY 'forum_id' ('forum_id'),
)
|
| |
|
|
|
|
|
|
|
для: Yakor
(12.05.2006 в 12:58)
| | Я бы написал так:
UPDATE posts JOIN topics ON posts.topic_id = topics.topic_id
SET posts.forum_id = nnnnn
WHERE topics.forum_id = nnnn
| или так:
UPDATE posts, topics
SET posts.forum_id = nnnnn
WHERE posts.topic_id = topics.topic_id AND topics.forum_id = nnnn
|
Без вложенного запроса.
Многотабличный UPDATE разрешен с версии 4.0.4 если не ошибаюсь. | |
|
|
|
|
|
|
|
для: Trianon
(12.05.2006 в 13:08)
| | Спасибо огромное!
Просто я переносил форум с бюлютени на пхпбб вручную и столкнулся с такой штукой, что у них очень отличается всё)))))
Короче перенес посты, а в бюлютени такой штуки как forum_id в таблице с постами - нет.
В итоге вышло что на главной показывается только кол-во топиков и пишет что всего постов 0.
Вообщем еще раз огромное спасибо! | |
|
|
|