[SQL] Вопросы по БД

Discussion in 'PHP' started by Kaimi, 7 May 2015.

  1. lifescore

    lifescore Elder - Старейшина

    Joined:
    27 Aug 2011
    Messages:
    601
    Likes Received:
    459
    Reputations:
    65
    куда реальнее? конструктор в детстве не собирал?

    начни с вопроса корректно поставленного, если понимаешь "что не правильно" в чем проблема сделать правильно?
    или же расписать почему придерживаешься данному выводу?

    вопрос предельно простой, есть поиск, есть гугл, есть 2 ссылки выше которые наглядно показывают, и популярно объясняют по существу твоих вопросы, ок?
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    268
    Reputations:
    2
    есть база вида:
    1|вася1|2017-01-17 12:22:41
    2|вася2|2017-01-17 12:23:41
    3|вася3|2017-01-17 12:42:41
    4|вася4|2017-01-17 13:22:41
    5|вася5|2017-01-17 13:44:41
    5|вася5|2017-01-17 14:32:41
    как посчитать кол-во записей, сделанных за определённый час? выход должен быть таким:

    3 | 2017-01-17 12:00
    2 | 2017-01-17 13:00
    1 | 2017-01-17 14:00

    спасибо!

    upd: победил. SELECT count(*) FROM db WHERE date(bdate)=curdate() AND hour (bdate)=12
     
    #22 1n0y, 17 Jan 2017
    Last edited: 17 Jan 2017
  3. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    795
    Likes Received:
    140
    Reputations:
    73
    GROUP BY HOUR(bdate) ?
     
  4. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    268
    Reputations:
    2
    норм, взял на вооружение
     
  5. Octavian

    Octavian Member

    Joined:
    8 Jul 2015
    Messages:
    478
    Likes Received:
    87
    Reputations:
    21
    Делою статистику поисковых запросов на саите,Пример из БД
    Code:
    IP                 SEARCH_TEXT
    ----              pizza
    ----              cola
    ----              pepsi
    ----              pizza
    ----              pizza
    
    Нужно составить запрос к БД которыи выбирает все SEARCH_TEXT которые повторяются больше(<=) 3 раза . результат "pizza"
     
    #25 Octavian, 14 Mar 2017
    Last edited: 14 Mar 2017
  6. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    557
    Likes Received:
    1,052
    Reputations:
    356
    Code:
    SELECT SEARCH_TEXT FROM SEARCH_TABLE GROUP BY 1 HAVING COUNT(DISTINCT IP) > 3
    
    Я с SQL на "Вы", так что этот вариант только для тестов :)
     
    Octavian likes this.
  7. Octavian

    Octavian Member

    Joined:
    8 Jul 2015
    Messages:
    478
    Likes Received:
    87
    Reputations:
    21
    Не робит никаких результатов не выдает
     
  8. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    557
    Likes Received:
    1,052
    Reputations:
    356
    DISTINCT IP не нужно, намудрил.

    Code:
    SELECT SEARCH_TEXT FROM SEARCH_TABLE GROUP BY 1 HAVING COUNT(*) >= 3
    
    В следующий раз выкладывай структуру и тестовые данные в SQL, будет намного проще.
     
  9. Gorbachev

    Gorbachev Level 8

    Joined:
    23 Mar 2017
    Messages:
    258
    Likes Received:
    143
    Reputations:
    82
    Подскажите аналог Mysql функции group_concat, в определенном случае именно её не могу использовать, но то что делает она (вытаскивает разом все записи с одной таблицы, с разделителем), мне нужно сделать.
     
  10. Octavian

    Octavian Member

    Joined:
    8 Jul 2015
    Messages:
    478
    Likes Received:
    87
    Reputations:
    21
    [​IMG]
    Русские символы заменяются "?" примечательно что только заглавные, кодировка бд utf8 general ci, думал и за xampp переустановил тоже самое, раньше такого не наблюдалось выходит что это что то на уровне компа
     
  11. ms13

    ms13 Well-Known Member

    Joined:
    19 Jun 2015
    Messages:
    2,770
    Likes Received:
    13,915
    Reputations:
    116
    Алхимия слова!
     
  12. Octavian

    Octavian Member

    Joined:
    8 Jul 2015
    Messages:
    478
    Likes Received:
    87
    Reputations:
    21
    Есть таблица
    Code:
     _Имя_           _Департамент_
     Octavian        100
     Andrei          102
     Victor          100
     Marius          102
     Misa            102
    Нужен запрос чтоб получить в результате
    Code:
     _Имя_          _Колеги по департаменту_
     Octavian        Victor
     Andrei          Marius, Misa
     Victor          Octavian
     Marius          Andrei, Misa
     Misa            Marius,Andrei
     
  13. vinosh

    vinosh Member

    Joined:
    29 Oct 2011
    Messages:
    74
    Likes Received:
    16
    Reputations:
    5
    Есть ли смысл заменять длинные типовые значения в таблице на условный индификатор?

    Пример:
    Есть таблица 50к+ строк, столбец N имеет значение вида "XXXXX_ZZZZ_YYYY" именно по этому столбцу выполняется поиск(выборка) при этом уникальных значений в этом столбце не более 20шт, остальное повторы.

    Есть ли смысл заменить значение "XXXXX_ZZZZ_YYYY" например на "5" ( и так же все остальные в диапазоне от 1 до 20 ) даст ли это какую то разгрузку на базу/прирост в производительности?
     
  14. lifescore

    lifescore Elder - Старейшина

    Joined:
    27 Aug 2011
    Messages:
    601
    Likes Received:
    459
    Reputations:
    65
    50к строк, 20 уник значений в столбце... О какой вприцнипе нагрузке речь? С этим можно даже в блокноте стоковом винды (наверно).
    Кроме сортировки есть еще и группировка
    https://dev.mysql.com/doc/refman/8.0/en/example-maximum-column-group-row.html

    Но как я вижу суть вопроса и его изложение:
    Возьмем 3 слова. "Тетрадь", "Карандаш", "Стул". Будет ли быстрее или легче взаимодействовать если я сокращу до 3х первых букв - "Тет", "Кар", "Сту". Максимум я сэкономлю места для хранения этих записей.
    Но для человека будет не проще работая с нестандартными значениями.
     
  15. Illya

    Illya New Member

    Joined:
    27 Jul 2018
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Запрос сильно грузит бд и страница очень долго загружается, а иногда вообще разрывает соединение. Как его можно оптимизировать?


    $ db-> Query ("SELECT users_a.user, users_a.date, users_b.te_on, users_a.url FROM users_a, users_b
    WHERE users_a.id = users_b.id И users_a.ref_id = '$ user_id' ORDER BY te_on DESC ");

    if ($ db-> NumRows ()> 0) {

    while ($ ref = $ db-> FetchArray ()) {

    ///…тут идет вывод данных пользователей в таблицу

    }

    } else echo '...';
     
  16. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    1,988
    Likes Received:
    880
    Reputations:
    198
    Каким образом вы определили что запрос медленный? Через лог медленных запросов или по звездам? Судя по всему сам по себе запрос обыкновенный, а вот структура возможно хромает. Ключики, индексы, фаза луны - все это важно. Обратите на это внимание.
     
    _________________________
Loading...