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

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

  1. lifescore

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

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

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

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

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    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:
    801
    Likes Received:
    145
    Reputations:
    73
    GROUP BY HOUR(bdate) ?
     
  4. 1n0y

    1n0y Active Member

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

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

    Joined:
    8 Jul 2015
    Messages:
    506
    Likes Received:
    101
    Reputations:
    25
    Делою статистику поисковых запросов на саите,Пример из БД
    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:
    683
    Likes Received:
    1,513
    Reputations:
    460
    Code:
    SELECT SEARCH_TEXT FROM SEARCH_TABLE GROUP BY 1 HAVING COUNT(DISTINCT IP) > 3
    
    Я с SQL на "Вы", так что этот вариант только для тестов :)
     
    Octavian likes this.
  7. Octavian

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

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

    crlf Green member

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

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

    Тот_самый_Щуп Reservists Of Antichat

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

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

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

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

    Joined:
    19 Jun 2015
    Messages:
    4,236
    Likes Received:
    26,248
    Reputations:
    148
    Алхимия слова!
     
  12. Octavian

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

    Joined:
    8 Jul 2015
    Messages:
    506
    Likes Received:
    101
    Reputations:
    25
    Есть таблица
    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:
    72
    Likes Received:
    15
    Reputations:
    5
    Есть ли смысл заменять длинные типовые значения в таблице на условный индификатор?

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

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

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

    Joined:
    27 Aug 2011
    Messages:
    651
    Likes Received:
    511
    Reputations:
    72
    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 Banned

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

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    topmytop,
    Code:
    SELECT visitor_date, count(*) FROM Table GROUP BY visitor_date;
     
    K800 likes this.