2013-08-30 4 views
0

я есть шаги таблицы с это sort_id (идентификатор) (a_i) PAGE_ID и сортировать номер (сортировки), мне нужно добавить новую строку с тем же PAGE_ID и макс рода группы ид и PAGE_IDPHP MySQL Неправильное использование функции группы

mysql_query("INSERT INTO `steps` (`sort`, `page_id`) 
VALUES 
    (
     MAX(`sort`) + 1, 
     (
      SELECT 
       page_id 
      FROM 
       steps 
      WHERE 
       `id` = '1' 
     ) 
    )"); 

и я получаю ошибки

[Err] 1111 - Invalid use of group function 

мне нужно как этот

INSERT INTO `steps` (`sort`, `page_id`) 
VALUES 
    (
     SELECT 
      Max(s1.sort) + 1 AS sort, 
      s2.page_id AS page_id 
     FROM 
      steps AS s1, 
      steps AS s2 
     WHERE 
      s2.id = '1' 
    ) 

но [Err] 1064 - У вас есть ошибка в синтаксисе SQL;

+0

_ «и максимального родом идентификатор группы и PAGE_ID» _ - ну, тогда _select_ это значение вместо того, чтобы просто помещать имя агрегатной функции случайным образом в запрос, где он не принадлежит. – CBroe

ответ

0

Вы, кажется, отсутствует select часть подзапроса:

insert into `steps`(`sort`, `page_id`) 
values 
(
    SELECT 
     max(`sort`) +1, 
     page_id 
    FROM 
     steps 
    WHERE 
     `id` = '1' 
    group by 
     page_id 
) 

Это поздно, но это должно либо работать, либо поставить вас на правильный путь, чтобы заставить его работать.

Наконец, вы должны действительно отойти от функций mysql_query. Посмотрите на PDO. Он безопаснее, переносится в другие базы данных, и если вы просто изучаете этот материал сейчас, вы можете также узнать о текущей технологии.

Edit:

на основе комментария к другому ответу, это будет ближе к тому, что вы ищете:

insert into `steps`(`sort`, `page_id`) 
values 
(
    SELECT 
     (select max(`sort`) from steps) +1, 
     page_id 
    FROM 
     steps 
    WHERE 
     `id` = '1' 
    group by 
     page_id 
) 
+0

[Err] 1064 - У вас есть ошибка в синтаксисе SQL; – user2368299

+0

мне нужно, как вставить в 'steps' (' sort', 'page_id') значения ( ВЫБОР макс (' sort') +1, PAGE_ID ОТ шаги ГДЕ 'id' = '1' group by page_id ) – user2368299

0
mysql_query("INSERT INTO `steps` (`sort`, `page_id`)(SELECT MAX(`sort`) + 1,page_id FROM steps WHERE `id` = '1')"); 
+0

Мне нужна максимальная сортировка. Идентификатор может быть любым не только 1, но у них одинаковый page_id – user2368299

+0

Не проблема. Попробуйте. он будет работать согласно вашему требованию. –

+0

мне нужно как этот вставить в 'steps' (' sort', 'page_id') ЗНАЧЕНИЯ ( ВЫБОР Макс (s1.sort) +1, как своего рода, s2.page_id как PAGE_ID ИЗ шаги как S1, шагов AS s2 WHERE s2.id = '1' ) – user2368299