Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вложенный подзапрос INSERT с SELECT в одном из значений / 17 сообщений из 17, страница 1 из 1
27.01.2014, 13:36:05
    #38538915
gorgeous92
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
Всем привет!
Встала задача, решение ищу уже второй день, может поможет кто, итак...
INSERT INTO table (name, id) VALUES ('Имя', 3)

как мне построить запрос так, что бы в поле id попадало максимальное значение из столбца, и ещё прибавлялось +1.
По логике вещей, должно быть что то типа

INSERT INTO table (name, id) VALUES ('Имя', (SELECT MAX(id) FROM table) )

Но я где то явно косячу, как правильно ?
и как прибавить ещё +1 к максимальному значению столбца
...
Рейтинг: 0 / 0
27.01.2014, 13:38:26
    #38538917
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
gorgeous92,

auto_increment?
...
Рейтинг: 0 / 0
27.01.2014, 13:42:53
    #38538932
gorgeous92
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
tanglir,

АвтоИнкремент уже присутствует в этой таблице.
Это поля, является полем сортировки, и в него нужно вставлять значение, на +1 больше, из максимального текущего.
...
Рейтинг: 0 / 0
27.01.2014, 13:44:43
    #38538934
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
gorgeous92и в него нужно вставлять значение, на +1 больше, из максимального текущего.именно этим и занимается автоинкремент :)
...
Рейтинг: 0 / 0
27.01.2014, 13:48:51
    #38538948
gorgeous92
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
tanglir,

Может я чуть не договорил, Но, в этой таблице записи, относятся ко многим категориям, т.е. получается что будет происходить выборка по категории, а потом всё сортироваться, соответственно этот столбец не является уникальным и автоинкрементарным.

И как это сделать подзапросом я уже голову сломал ...
...
Рейтинг: 0 / 0
27.01.2014, 13:54:08
    #38538957
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
gorgeous92, дубовый способ:
Код: sql
1.
INSERT INTO table (name, id4sort) VALUES ('Имя', (SELECT MAX(id)+1 FROM table where idcategory=###) )

и сразу морально готовьтесь к появлению дублей при сортировке
...
Рейтинг: 0 / 0
27.01.2014, 13:55:02
    #38538960
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
gorgeous92Но, в этой таблице записи, относятся ко многим категориямТак показывайте структуру таблицы полностью, желательно в виде DDL.
...
Рейтинг: 0 / 0
27.01.2014, 14:04:16
    #38538980
gorgeous92
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
tanglir,

Уже так пробовал и при выполнении этого запроса

INSERT INTO cat (name_c, sort_c) VALUES ('Имя', (SELECT MAX(sort_c)+1 FROM cat where id_razd_c = 3) )

имеем ошибку
#1093 - You can't specify target table 'cat' for update in FROM clause

id_c - "уникальный идентификатор"
name_c - "название записи"
sort_c- "сортировка записей"
id_razd_c - "id раздела, к которому принадлежит запись"
...
Рейтинг: 0 / 0
27.01.2014, 14:18:46
    #38539005
gorgeous92
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
tanglirgorgeous92, дубовый способ:
Код: sql
1.
INSERT INTO table (name, id4sort) VALUES ('Имя', (SELECT MAX(id)+1 FROM table where idcategory=###) )

и сразу морально готовьтесь к появлению дублей при сортировке

А почему Дубовый та? Что в нём не верно ?

Вот нашел описание схожей проблемы только при UPDATE
Походу принцип возникновения ошибки такой же. Не поможете составить запрос?
...
Рейтинг: 0 / 0
27.01.2014, 14:25:20
    #38539019
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
gorgeous92,
Код: sql
1.
INSERT INTO table (name, id) VALUES ('Имя', (SELECT MAX(id) FROM table) + 1 )
...
Рейтинг: 0 / 0
27.01.2014, 14:29:43
    #38539031
gorgeous92
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
MasterZivgorgeous92,
Код: sql
1.
INSERT INTO table (name, id) VALUES ('Имя', (SELECT MAX(id) FROM table) + 1 )



При выполнении
Код: sql
1.
INSERT INTO cat (name_c, sort_c) VALUES ('Имя', (SELECT MAX(sort_c) FROM cat) + 1 )



та же ошибка
#1093 - You can't specify target table 'cat' for update in FROM clause
...
Рейтинг: 0 / 0
28.01.2014, 05:41:25
    #38539896
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
ага, есть такое
можно так обойти:
Код: sql
1.
INSERT INTO cat (name_c, sort_c) select 'Имя', MAX(sort_c)+1 FROM cat 
...
Рейтинг: 0 / 0
28.01.2014, 07:37:36
    #38539924
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
gorgeous92По логике вещей, должно быть что то типа

INSERT INTO table (name, id) VALUES ('Имя', (SELECT MAX(id) FROM table) )

Но я где то явно косячу, как правильно ?
и как прибавить ещё +1 к максимальному значению столбца

По логике вещей должно быть что-то типа

Код: sql
1.
INSERT INTO table (name, id) VALUES ('Имя',  MAX(id)+1); 
...
Рейтинг: 0 / 0
28.01.2014, 07:48:20
    #38539929
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
deblogger,

валуес - отдельная клауза
как, по-вашему, сервер должен догадаться, что ид в валуес - это ид из той таблицы, куда он должен вставлять записи?
...
Рейтинг: 0 / 0
28.01.2014, 11:03:40
    #38540148
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
tanglir,

Не в таблице дело. Имя таблицы добавляется к имени поля, но по голым идентификаторам группировка не пашет.

То есть values не нужны вообще. Применяется типовой insert into ... select.
...
Рейтинг: 0 / 0
28.01.2014, 11:19:54
    #38540190
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
debloggerТо есть values не нужны вообще. Применяется типовой insert into ... select.который я и написал в предыдущем посте :)
...
Рейтинг: 0 / 0
28.01.2014, 15:08:59
    #38540612
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный подзапрос INSERT с SELECT в одном из значений
tanglir,

Конечно.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вложенный подзапрос INSERT с SELECT в одном из значений / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]