Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите составить запрос, или вообще возможноли это сделать
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Помогите составить запрос, или вообще возможноли это сделать

Страниц (1): [1]
 

1. Designer - 12 Июля, 2014 - 16:58:03 - перейти к сообщению
возможно ли 1 запросом сделать проверку затем добавление и после добавления получение тех данных которые долбавились?!

проверка
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT COUNT(*) FROM parse_work WHERE DATE(`register`)=CURRENT_DATE
  3.  


добавление
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. INSERT INTO parse_work SET `register`=NOW()
  3.  


получение
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM parse_work WHERE DATE(`register`)=CURRENT_DATE
  3.  

(Добавление)
Примерно понимаю что это связано с IF NOT () но как даже не представляю
2. LIME - 12 Июля, 2014 - 17:26:33 - перейти к сообщению
нифига не понятна задача
но дам наводку
REPLACE INTO
ON DUPLICATE KEY
что то да подойдет надеюсь
(Добавление)
это 2 разных наводки
3. Designer - 12 Июля, 2014 - 18:18:00 - перейти к сообщению
Непонимаю что непонятного в моем первом посте!

Попробую обьяснить еще раз!

Вобщем у меня делается 3 запроса,

1
это result который проверяет существование записи за чегодняшний день в тавлице
и если записи нет, то добавляем ее

а потом делаем запрос данный за сегодняшний день

я хочу объединить эти запросы, и делать в 1 запрос
(Добавление)
Ребят ну помогите пожалуйста!!!! ))


SELECT * FROM parse_work @ТУТ как бы код проверки существования записи и если она не найдена деалется добавление@ WHERE DATE(`register`)=CURRENT_DATE
То есть запрос полюбому вернет данные
4. LIME - 12 Июля, 2014 - 19:05:22 - перейти к сообщению
Designer пишет:
Непонимаю что непонятного в моем первом посте!
нихрена непонятно
попробую предположить
если существует запись то надо ее обновить
если нет то создать
тогда мои подсказки самое то
особенно первая
(Добавление)
Designer ты тупица
не первый твой идиотский пост читаю где ты даже по человечески не смог проблему сформулировать
я умею ванговать но не для тебя, идиот
5. Designer - 12 Июля, 2014 - 19:24:41 - перейти к сообщению
LIME, во первых оскорбления не в тему, были бы в тему промолчал, Ты не прав!

во вторых я если честно не пойму что непонятного в моем вопросе, и мне нахер не нужно обновление, мне нужно добавление записи, то есть,

что то выполняется на постоянной основе и записывается в определенное поле в этой таблице, далее наступают новые сутки, и само собой записи за эти новые сутки нет, значит ее нужно записать просто создав запись а поля буду автоматом со значением 0, и после этого всего получить данные, пусть даже нулевые, но главное что за новые сутки в таблице появилась запись! Проверка и создание это ведь уже 2 разных запроса, не так ли??

Я в 1 строчке четко описал необходимое и даже привел последовательный код тех самых запросов в БД с пояснением!

Я в шоке если чесно!
(Добавление)
и еще, по твоей перво2й наводке загуглил, да что то типо того, но я не особо силен в SQL, потому и создал тему о помощи
6. Sail - 15 Июля, 2014 - 09:10:29 - перейти к сообщению
Если по полю register построен уникальный индекс, то вместо проверки на существование и вставки можно воспользоваться запросом
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT IGNORE INTO parse_work SET `register`= NOW()
7. soffrick - 18 Июля, 2014 - 13:56:25 - перейти к сообщению
Designer пишет:
возможно ли 1 запросом сделать проверку затем добавление и после добавления получение тех данных которые долбавились?!

проверка
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT COUNT(*) FROM parse_work WHERE DATE(`register`)=CURRENT_DATE
  3.  


добавление
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. INSERT INTO parse_work SET `register`=NOW()
  3.  


получение
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM parse_work WHERE DATE(`register`)=CURRENT_DATE
  3.  

(Добавление)
Примерно понимаю что это связано с IF NOT () но как даже не представляю

union подойдет?
8. Sail - 18 Июля, 2014 - 14:56:14 - перейти к сообщению
soffrick пишет:
union подойдет?

Казалось бы, при чём тут "union"? Шок
9. broshurkaplus - 20 Июля, 2014 - 12:21:41 - перейти к сообщению
попробуйте так как вариант:
добавляйте сразу, не надо 2 запроса. в таблице повесьте уникальный индекс на поле, при его повторении вставки не произойдет и выводите ответ пользователю
для добавления непонятно:
- если вывести данные пользователю - выж их добавляете, можете и в ответе вывести
- если с ними манипуляции какие то, например в другую таблицу - так сделайте триггер в таблице с нужным действием, тем самым перенесете(доверите) всю работу непосредственно самой базе.

 

Powered by ExBB FM 1.0 RC1