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

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

  1. lifescore

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

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

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

    вопрос предельно простой, есть поиск, есть гугл, есть 2 ссылки выше которые наглядно показывают, и популярно объясняют по существу твоих вопросы, ок?
     
    1. 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
      1. LStr1ke

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

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

          1n0y Active Member

          Joined:
          9 May 2009
          Messages:
          276
          Likes Received:
          282
          Reputations:
          2
          норм, взял на вооружение
           
          1. 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
            1. crlf

              crlf Green member

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

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

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

                  crlf Green member

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

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

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

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

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

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

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

                        Joined:
                        19 Jun 2015
                        Messages:
                        4,237
                        Likes Received:
                        26,252
                        Reputations:
                        148
                        Алхимия слова!
                         
                        1. 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
                           
                          1. 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 ) даст ли это какую то разгрузку на базу/прирост в производительности?
                             
                            1. lifescore

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

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

                              Но как я вижу суть вопроса и его изложение:
                              Возьмем 3 слова. "Тетрадь", "Карандаш", "Стул". Будет ли быстрее или легче взаимодействовать если я сокращу до 3х первых букв - "Тет", "Кар", "Сту". Максимум я сэкономлю места для хранения этих записей.
                              Но для человека будет не проще работая с нестандартными значениями.
                               
                              1. 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 '...';
                                 
                                1. b3

                                  b3 Banned

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