Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> MySQL Присвоить номер позиции и сохранить запись, можно ли одним запросом ?
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




Подскажите пожалуйста, есть таблица например такого вида
newid position name
------- ---------- --------
1______0_____ телефон
2______1_____ телефон
3______0_____ авто
4______2_____ телефон
5______1_____ авто
6______3_____ авто
7______3_____ телефон
8______2_____ авто

можно ли одним запросом, посчитать номер позиции для определенного имени и добавить новую запись с last position + 1 то есть например
newid position name
------- ---------- --------
9______4_____ телефон
поле newid - AUTO_INCREMENT

или нужно сначала посчитать COUNT(*) а потом добавить число в position из COUNT (так как у меня счет идет от нуля)?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 19 дней
Карма: 147




insert into `table_name`(position,`name`)
select
max(position)+1,name
from `table_name` t
where
`name` = 'телефон'
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




Цитата (redreem @ 14.05.2016 - 16:11)
insert into `table_name`(position,`name`)
select
max(position)+1,name
from `table_name` t
where
`name` = 'телефон'

Спасибо - хорошо работает для уже существующих записей, но вот при создании новой с position все нормально, а name не присваивается!


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




Что то я ни как ни вкурю как это вставить в запрос
IF `name` ='' THEN  SET `name` ='$value'


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




INSERT INTO `scenes`(`position`, `name`) SELECT max(`position`)+1,IF(`name`=''  OR `name` IS NULL ,'test2',`name`)AS `name` FROM `scenes` t WHERE `name` = 'test2'
Вот так условие принимается по синтаксису, но значение не устанавливается ?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 19 дней
Карма: 147




ну естественно при создании новой нейму не от куда взяться.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




Ну так в условии то я прописал - присвоить новое значение, а оно не присваивается почему-то? Может условие как то подправить?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 19 дней
Карма: 147




insert into `table_name`(position,`name`)
select
case
when
name is null then 'qwe1'
else tt.`name`
end,
case
when
name is null then 1
else tt.pos
end name
from (
select
max(position)+1 pos, name
from `table_name` t
where
`name` = 'qwe1'
) tt



qwe1 - это name записи
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




я немного поковырял Ваш код

insert into `scenes`(`position`,`name_of_scene`)
select
case
when
`name_of_scene` is null then 'qwe1'
else tt.`name_of_scene`
end,
case
when
`name_of_scene` is null then 1
else tt.pos
end `name_of_scene`
from (
select
max(`position`)+1 pos, `name_of_scene`
from `scenes` t
where `name_of_scene` = 'qwe1'
) tt

может где ошибку допустил, но он не работает, а что значит t и tt. ?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




При отсутствии name создается пустая ячейка, а при наличии в таблице name='qwe1' в position пишется 0 а в name 1


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 19 дней
Карма: 147




а может ты включишь мозг и сделаешь сам?
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




Сделать то я конечно сделаю, просто хотелось знать как правильно это сделать!


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 19 дней
Карма: 147




так сделай, выложи вариант - там уже посмотрим.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 957
Пользователь №: 37872
На форуме: 3 года, 11 месяцев, 24 дня
Карма: 37




Получилось вот так:

INSERT INTO `scenes`(`position`, `name`)
SELECT max(`position`)+1,
IF(`name` IS NULL,'$variable','$variable')AS `name`
FROM `scenes` WHERE `name` = '$variable'


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 19 дней
Карма: 147




ну если работает, то в чем вопрос? smile.gif
типа position у тебя получается null+1 = 1?
лучше все-таки контролировать такие вещи явно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса