За последние 24 часа нас посетили 62419 программистов и 1743 робота. Сейчас ищет 881 программист ...

Помогите выполнить сложный запрос в БД! Пожауйлста.

Тема в разделе "PHP и базы данных", создана пользователем Invision, 8 ноя 2010.

  1. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Необходим сложный запрос не знаю как даже реализовать. Примерно расскажу:

    Выбрать из таблицы users параметр ID всех отсутствющих. к примеру идет 1,2,3,5,6 - тоесть из списка нету 4 ид, нужно взять его) затем удалить запись из таблицы active где user_id будет = 4. Вот примерно так. Я не могу просто понять как выбрать несуществующую записи..вот. спасибо)
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так не делается. делается так: ставится какое-то например временнОе ограничение, а из базы выбираются только те, у кого допустим последнее действие (просмотр страницы например) было не старше этого временнОго ограничения.
    соотв, при шевелении юзверя ты какой-нить столбец типа last_action все время обновляешь
     
  3. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Invision,
    [sql]delete from active where user_id not in (select id from users)[/sql]

    Но, вообще, не кошерный метод. Лучше сделать, как сказал igordata.
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    lexa
    ибо при таком подходе он будет проглядывать всю базу каждый раз для проверки одного юзверя. каждого юзверя!
     
  5. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    так мне и нужно только один раз. проблема в том что на движке одном удалил юзера, а в активности его ID значится и выдает ошибку, причем таких юзеров не один и записей несколько десятков тысяч) собственно вот так) спасибо за совет)
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ну если разово, то пох =)

    можно изъебнуться и просто создать новую таблицу только с теми которые "есть" а старую похерить и переименовать :D
    работае офигенно быстро, кто-то тут пару недель назад такой темой козырял довольный :D
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    igordata

    Ага, это Хайта способ был, я им тоже стал пользоваться, оч. удобно)))
     
  8. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    та чё тут
    вынуть все айди юзеров в массив , сравнить с массивом полных чисел - получим массив тех кого у нас нет.
    далее foreach $users as $key=>$value и в нём delete from users where userid=$value , грамматику только соблюдать при переписывании , идею надеюсь понял
     
  9. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    понял, спасибо большое!