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 :: Версия для печати :: Не срабатывает условие в SQL запросе
Форумы портала PHP.SU » » Работа с СУБД » Не срабатывает условие в SQL запросе

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

1. smegol - 27 Марта, 2015 - 23:47:56 - перейти к сообщению
Добрый день, не могу понять что не так.
Не срабатывает условие:
CODE (SQL):
скопировать код в буфер обмена
  1. 0 < (SELECT id FROM table2 WHERE col_min< ? < col_max)
т. е. если переменная попадает в диапазон - вернуть id, если id больше 0 обновить данные в таблице.
При этом когда ставлю вместо id - COUNT(id) обновляются даже те значения которые не попадают в диапазон.

Запрос:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. UPDATE table1
  3. SET col = 1
  4. WHERE 0 < (SELECT id FROM table2 WHERE col_min < ? < col_max) AND id_site = ?
  5.  
2. GoDr - 28 Марта, 2015 - 06:49:29 - перейти к сообщению
а если просто
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id FROM table2 WHERE col_min > ? AND col_max < ?
3. LIME - 28 Марта, 2015 - 07:53:14 - перейти к сообщению
а как связаны table1 и table2?
если через id, то типа того
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE table1
  2. SET col = 1
  3. WHERE table1.id IN (SELECT table2.id FROM table2 WHERE col_min < ? < col_max AND table2.id > 0) AND id_site = ?;
  4.  
  5. UPDATE table1
  6. JOIN table2 ON table1.id = table2.id AND col_min < ? < col_max AND table1.id > 0
  7. SET col = 1
  8. WHERE id_site = ?;
4. smegol - 28 Марта, 2015 - 11:39:37 - перейти к сообщению
GoDr пишет:
а если просто
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id FROM table2 WHERE col_min > ? AND col_max < ?


так пробовал - результат тот же.
(Добавление)
LIME пишет:
а как связаны table1 и table2?
если через id, то типа того
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE table1
  2. SET col = 1
  3. WHERE table1.id IN (SELECT table2.id FROM table2 WHERE col_min < ? < col_max AND table2.id > 0) AND id_site = ?;
  4.  
  5. UPDATE table1
  6. JOIN table2 ON table1.id = table2.id AND col_min < ? < col_max AND table1.id > 0
  7. SET col = 1
  8. WHERE id_site = ?;


они не как не связаны, просто переменная должна попадать в диапазон между col_min и col_max.
5. LIME - 28 Марта, 2015 - 11:59:13 - перейти к сообщению
omg
6. DeepVarvar - 28 Марта, 2015 - 14:20:06 - перейти к сообщению
omfg
7. Faraon-san - 28 Марта, 2015 - 14:36:28 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id FROM table2 WHERE ? BETWEEN col_min AND col_max
8. LIME - 28 Марта, 2015 - 17:49:20 - перейти к сообщению
Faraon-san и че???)))
(Добавление)
блин...оно мне надо?
не отвечай я ушел
9. smegol - 29 Марта, 2015 - 01:14:53 - перейти к сообщению
LIME пишет:
Faraon-san и че???)))
(Добавление)
блин...оно мне надо?
не отвечай я ушел


Простите! Но из соображений этикета не могу не поблагодарить за внимание оказанное моему вопросу. Пояснение: Я понимаю что трата времени на мой вопрос для Вас кажется бессмысленной и это нормально, в целом я большего не ожидал - ведь на дворе 2015 год и все ответы уже найдены) Если Вам нечего добавить закрываю тему.

 

Powered by ExBB FM 1.0 RC1