За последние 24 часа нас посетили 17566 программистов и 1719 роботов. Сейчас ищут 1776 программистов ...

ID последней вставленной записи

Тема в разделе "PHP и базы данных", создана пользователем Dedov_Evgeniy, 18 окт 2015.

  1. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Да, все (3) варианты проверил всё верно отрабатывает...
     
  2. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Вы не понимаете что есть BETWEEN. И не понимаете работы операторов AND и OR.
    Например, "a between b and c" это просто "очеловеченная" запись условия "(a >= b and a <= c)". В доке об этом написано.
    А то, что у Вас что-то с чем-то совпало, это всего навсего частный случай.

    Хотите стать нормальным разрабом, изучайте мат.часть, - без неё никуда, к сожалению.
     
  3. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Ну, зря Вы так. Я может в sql не совсем просто силен, но на php лет 9 по10 часов в день отсидел точно. Прошёл так сказать путь от процедурного стиля до ОПП со всеми паттернами и абстракциями.

    Если Вам не сложно приведите правильный пример, как можно сократить данную запись, как видите мне не только нужно готовое работающее решение, а я пытаюсь действительно понять как лучше делать, что бы учиться.

    PS И не подумайте что я из тех кто ищет тупо готовое решение не вникая что да как, на форуме стараюсь спрашивать - когда действительно задолбался пробовать и читать доки в Инете.
    Как то так...
     
  4. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Если так, тогда Вам ничего не стоит описать словами это логическое выражение:
    Код (PHP):
    1. (`date_in` OR `date_out` BETWEEN '2015-10-01' AND '2015-10-31') 
    Опишите.
     
  5. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Столбец date_in ИЛИ (OR ||) столбец date_out должен содержать значения:
    Больше или быть равным >= '2015-10-01'
    И (AND &&)
    Меньше ИЛИ быть равным <= '2015-10-31'

    Другими словами:
    Столбец date_in ИЛИ столбец date_out должен содержать значение даты в диапазоне дат ОТ '2015-10-01' ДО '2015-10-31'
     
  6. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Неправильно понимаете.
    Посмотрите ещё раз, что есть between, - скобки там поставлены не зря. И ещё раз опишите, с учётом.
     
  7. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Хз. Или я переработал уже, или у меня крыша поехала к е..ям. Ух простите за тупость. У меня нет вариантов.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Условие OR условие. Вот что ты написал.
     
  9. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Метод научного тыка ещё никто не отменял. Берём Ваше условие и переписываем на аналог:
    Код (PHP):
    1. (date_in OR (date_out >= '2015-10-01' AND date_out <= '2015-10-31'))  
    Теперь сможете описать логику?
     
  10. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    А как так можно значение сравнивать с выражением? Которое возвращает 0 или 1 (false true). Может в sql так можно?
    Это всё равно что написать на php:
    Код (PHP):
    1. $x1 = 300;
    2. $x2 = 40;
    3.  
    4. if($x1 || ($x2 >= 0 && $x2 <= 100)) echo 'ОК';
    5.  
    Результат будет ОК.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  11. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Ещё раз, - опишите логику, словами.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Кому-то пора в отпуск...
     
  13. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Как не стыдно это не звучит, но это точно :(
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ни стыдно не звучит :p

    так ты врубился или нет?
     
  15. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Нет, я же говорю, Как не стыдно это не звучит.
    Подожду чел. из отпуска, может он мне объяснит, а то я чую весь форум уже "лежит".
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ни стыдно. ни.

    Добавлено спустя 49 секунд:
    бля вот я пиздоглазое мудило, наборот же.

    или вообще везде ни?
     
  17. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Да что сразу мудило, доеду сам позже. Просто я не знаю у всех так или тока у нас - постоянно нету время что бы разобраться со всем нормально, постоянно куда то торопишься, просто охота лечь и ни думать вообще :)
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Блин, чувак
    у тебя с одной стороны OR отдельное условие, отдельное выражение. И с другой. Они не связаны.
     
  19. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Думаю, тут другое.
    Или троль или человек никогда не был программистом, не смотря на утверждение "на php лет 9 по10 часов в день", - он не понимает работу логических операторов, что невозможно уже после пары дней изучения любого языка. Вероятнее всего, троль.
     
  20. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Блин Ваш вариант НЕ правильно отрабатывает!
    Этот правильно:
    Код (PHP):
    1. SELECT `id`, `id_box` FROM `orders`
    2. WHERE `id_box` =  32 AND
    3. (
    4. ('2015-10-01' BETWEEN `date_in` AND `date_out`) OR
    5. ('2015-10-31' BETWEEN `date_in` AND `date_out`) OR
    6. (`date_in` BETWEEN '2015-10-01' AND '2015-10-31') OR
    7. (`date_out` BETWEEN '2015-10-01' AND '2015-10-31')
    8. )
    9.  
    Этот пиздит !!! Если указать в уже имеющийся диапазон.
    Код (PHP):
    1. SELECT `id`, `box` FROM `orders`
    2. WHERE `box` =  32 AND
    3. (
    4. ('2015-10-01' BETWEEN `date_in` AND `date_out`) OR
    5. ('2015-10-31' BETWEEN `date_in` AND `date_out`) OR
    6. (date_in OR (date_out >= '2015-10-01' AND date_out <= '2015-10-31'))
    7. )
    8.  
     
  21. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Возможно реально человек загрузил себя.
     
  22. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Да причём тут загрузил.
    Попробуйте в таблицу 2 строки забейте (date_in и date_out) - тип DATE:
    1: 2015-10-08 - 2015-10-13
    2: 2015-10-15 - 2015-10-20

    Выполните Ваш запрос с диапазоном 2015-10-09 - 2015-10-12
    С каких хренов то он 2 строки в результате выдаёт?

    Это конечно не критично, но и неправильно.
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто теперь ты сравниваешь строки, а не даты
     
  24. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    капай в эту сторону
    date_out >= date( '2015-10-01')
     
  25. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Функция date может быть полезна если столбец типа datetime, а сравнение нужно только по дате. В моём случае, даже если я "прикручу" date - результат будет тот же, так как тип date