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

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. \/ITA

    \/ITA Member

    Joined:
    21 Sep 2011
    Messages:
    25
    Likes Received:
    28
    Reputations:
    8
    просто работает онлайн сервис коротких ссылок
    всякое хамло накидало мусора в БД, нужно почистить и использовать незанятые индексы под более короткие адреса

    P.S. закинул в админку вывод ТОПа последних ссылок с кнопкой
    нажал - отметил, нажал - отметил, удобно =)
     
    #1741 \/ITA, 25 Jul 2012
    Last edited: 25 Jul 2012
  2. ..::TROYAN::..

    ..::TROYAN::.. Elder - Старейшина

    Joined:
    22 May 2008
    Messages:
    90
    Likes Received:
    116
    Reputations:
    14
    как можно сделать дамп таблицы, вытянув инфу по определённым параметрам, либо чем можно вытянуть? так как таблица большая, около 100к записей, отсортировать и в дамп мне только нужно около 10к записей , через phpmyadmin столько не получится экспортировать , пробовал вбивать запрос select * from tabl where key = '32' неполучается
     
  3. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    Как это не получится экпортировать? Там хоть биллон таблиц экспортируй (сохраняй в файл). А сортировать лучше уже у себя.
     
    _________________________
  4. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    из 100к строк нужно 10к. Каких именно? последних?
    в отсортированном виде а это по какому полю?
    Например:
    SELECT * FROM
    (SELECT * FROM tabl ORDER BY key DESC LIMIT 10000) AS mytab
    ORDER BY key;

    Берет последние 10к записей и сортирует по key (по возрастающей)
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    ..::TROYAN::.. Sypex dumper вроде как не ломается на объемистых таблицах
     
    _________________________
  6. ..::TROYAN::..

    ..::TROYAN::.. Elder - Старейшина

    Joined:
    22 May 2008
    Messages:
    90
    Likes Received:
    116
    Reputations:
    14
    у меня в таблице находятся пользователи, мне нужно сделать чтобы выбранная группа пользователей только смогла записатся в дамп, sypex не позволяет делать такой дамп, дамп чтото вроде "select * from tab where key = 'test' into outfile '/tmp/s.sql'
     
  7. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Code:
    SELECT (SELECT count(*) FROM `table` WHERE DATE_FORMAT(_date, '%Y-%m-%d') = '2012-08-1'), (SELECT count(*) FROM `table` WHERE DATE_FORMAT(_date, '%Y-%m-%d') = '2012-08-2'), .... (SELECT count(*) FROM `table` WHERE DATE_FORMAT(_date, '%Y-%m-%d') = '2012-08-31'), 
    Нужно получить кол-во записей в таблице за каждый день. Можно ли оптимизировать запрос выше?

    UDP 1:

    На выходе нужно получить что то вроде 21, 53, 65, 23, 54... за каждый день. Дней может быть очень много.

    //Вопрос закрыт
     
    #1747 randman, 18 Aug 2012
    Last edited: 19 Aug 2012
  8. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    Code:
    SELECT count(*)
    FROM
       `table` AS t,
       `imglog` AS im 
    WHERE 
      (DATE_FORMAT(t._date, '%Y-%m-%d') = '2012-08-1') 
    OR 
      (DATE_FORMAT(im._date, '%Y-%m-%d') IN ('2012-08-2','2012-08-31')
     ;
     
  9. zifanchuck

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

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    Как в mysql при выборке указать сравнение строк? LIKE и STRCMP походу не катит. Нужно чтобы например кол-во совпадающих символов было больше 5 например. Например на php примерная функция

    PHP:
    function sravn($str1,$str2)
    {
    $k 0;
        for(
    $i=0;$i<strlen($str1);$i++)
        if(
    $str1[$i]==$str2[$i])
        
    $k++;

    return 
    $k;
    }
    Длинна строк одинаковая. Как сделать такое средствами mysql?
     
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    zifanchuck Вам это зачем? Вам достаточно совпадения префиксов что ли?
    Code:
    SELECT * FROM table WHERE LEFT(`column`, 5)=LEFT('some_string', 5)
     
    _________________________
  11. zifanchuck

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

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    Gifts вообщим есть таблица, в ней записи. Например

    Code:
    11211111111211
    21121121222111
    11111211112211
    12121112112111
    11111111111121
    11122212122222
    11122222211221
    21121112121111
    11111121122112
    21111222212121
    12211111222211
    21122111221111
    11111111111112
    
    И есть еще одна строка, длинна тоже 14 символов, с которой нужно сравнивать строки из таблицы, и отбирать только те у которых совпадения >5 . Совпадать символы могут не только первые, а вообще по всей длинне. Префиксы не подойдут.

    Сейчас копаю в сторону "CREATE FUNCTION" . При выборке можно будет же указать
    WHERE SRAVN(table_name.st,"11111111111111")>5
    ??


    UPD

    Пока получилось только такое

    PHP:
    CREATE FUNCTION `sravn`(`str1CHAR(14),`str2CHAR(14)) RETURNS int
    BEGIN
    DECLARE k int DEFAULT 0;
    DECLARE 
    i int DEFAULT 1;

        WHILE 
    <= 14 DO
        IF (
    SUBSTRING(str1,i,1)=SUBSTRING(str2,i,1))THEN SET k 1;
        
    END IF;

        
    SET i 1;

         
    END WHILE;

    RETURN 
    k;
    END;
    Работает, но довольно медленно. 4млн обходит за 5 минут. Напрямую к символу строки обратиться не получилось, пришлось делать костыль через SUBSTRING. Есть возможность напрямую обращаться?
     
    #1751 zifanchuck, 21 Aug 2012
    Last edited: 21 Aug 2012
  12. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    Есть 2 таблицы number и message

    number - id number rublic
    message - id message rublic


    что бы посмотреть message с number используем запрос типа
    select number.*,message.* from number,message where message.rublic=number.rublic

    номера повторяются, а нужно составить запрос с уникальными номерами

    что то типа

    select number.*,message.*,count(number.number) as count from number,message where message.rublic=number.rublic and count=1 group by number.number - короче запрос лажа и не пашет по понятным причинам... т.к. написал его для логического примера

    прошу помочь составить запрос
     
  13. cipa21

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

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    есть 3 связанные таблицы authors, titleauthor, titles

    [​IMG]

    нужно показать самую дорогую книгу написанную авторами из калифорнии

    Запросом
    Code:
    SELECT titles.price, titles.title FROM authors, titleauthor, titles
    WHERE (authors.state = 'ca') AND (authors.au_id = titleauthor.au_id) AND (titleauthor.title_id = titles.title_id)
    GROUP BY titles.price, titles.title
    HAVING MAX(titles.price)=titles.price
    выдает самую дорогую книгу авторов из группы.
    Помогите пожалуйста....
     
  14. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    Так попробуй

    Code:
    SELECT max(titles.price), titles.title FROM authors, titleauthor, titles
    WHERE (authors.state = 'CA') AND (authors.au_id = titleauthor.au_id) AND (titleauthor.title_id = titles.title_id)
    
     
    _________________________
  15. cipa21

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

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    Нельзя и не будит так работать!!

    Может кому пригодится, проблема решена:
    Code:
    select titles.price, titles.title from authors, titleauthor, titles
    where (authors.state = 'ca') and (authors.au_id = titleauthor.au_id) and (titleauthor.title_id = titles.title_id)
    GROUP BY titles.price, titles.title
    HAVING MAX(titles.price)=(select MAX(price) from titles)
    или так:
    Code:
    select titles.price, titles.title from authors, titleauthor, titles
    where (authors.state = 'ca') and (authors.au_id = titleauthor.au_id) and (titleauthor.title_id = titles.title_id) and titles.price = (select MAX(price) from titles)
    
     
    #1755 cipa21, 2 Oct 2012
    Last edited: 2 Oct 2012
  16. Adio

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

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Есть большой сайт - с подкатегориями.
    На сайт идет нагрузка - тобиш на базу. (так как категорий много)

    Поможет мне такой вариант для распределение запросов.

    Я под каждую категорию покупаю базу данных.

    И при обращенни к категории - подключаеться конфиг или условие которое берет из базы данных этой категории ?
     
  17. Relium

    Relium Banned

    Joined:
    2 Jun 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Скрипт

    Здравствуйте, хотел бы тут увидеть скриптик, не большую форму заполнения текстом и чтоб при этом всё записывалось в базе данных по переменным: а тоесть:
    PHP:
    id-Какое по счёту сообщения.
    name-Названия сообщения
    body
    -текст сообщения
    putdate
    -Дата создания
    author
    -Автор сообщения 
    буду очень благодарен
     
  18. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Вот тут есть.
     
  19. Relium

    Relium Banned

    Joined:
    2 Jun 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Это вы к чему мне написали? Заказать мне работу? или там уже есть имеющиеся?
     
  20. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Если вы просите помочь найти скрипт, то четко это и указывайте. А если нужно написать новый сценарий, обращайтесь в раздел форума предложенный выше.
     
Thread Status:
Not open for further replies.