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

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

Thread Status:
Not open for further replies.
  1. andreipup

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

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0
    Проблема такая вот таблица

    CREATE TABLE `text` (
    `id` int(11) NOT NULL auto_increment,
    `text` tinytext character set cp1251 NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `text` (`text`(28))
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC ;



    Вот нужно как то в ней увеличить текст при вставке

    text`(28) пробовал увеличивать не помогло.
     
  2. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Спасибо, добил. Блин, короче ниже в коде, был еще один запрос. Там то и надо было делать изменения )
     
  3. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    andreipup
    Code:
    `text` text character set cp1251 NOT NULL
    либо mediumtext, longtext и тп.
    Вот их размеры
    Code:
    TINYBLOB, TINYTEXT 	L + 1 bytes, where L < 28 
    BLOB, TEXT 	L + 2 bytes, where L < 216 
    MEDIUMBLOB, MEDIUMTEXT 	L + 3 bytes, where L < 224 
    LONGBLOB, LONGTEXT 	L + 4 bytes, where L < 232
    
     
  4. [R]eD

    [R]eD Elder - Старейшина

    Joined:
    1 Aug 2006
    Messages:
    72
    Likes Received:
    1
    Reputations:
    0
    Такой вопрос:

    Есть например числа: 95.51613, 95.46654, 95.46578.
    Если делать order by time, mysql будет учитывать числа после точки? Или только целое?
     
  5. [х26]VОLАND

    [х26]VОLАND Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    513
    Likes Received:
    756
    Reputations:
    218
    А самому попробовать никак?
     
  6. eiti

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

    Joined:
    8 Jul 2008
    Messages:
    60
    Likes Received:
    3
    Reputations:
    5
    на http://www.sql.ru/forum/ сказали, что варианты ответов не правильные. продублирую здесь.

    изучаю самостоятельно.
    уже обгуглился, но определения так и не нашел , поэтому к вам.

    1. Определение сервера приложений:
    1. Определение активного сервера:
    2. Определение файл-сервера:
    4. Определение выделенного сервера:

    a) Между клиентом и сервером вводится промежуточное звено, на котором размещается бизнес-логика и управление данными. Эту архитектуру называют также трехуровневой.
    b) На сервере размещены файловая система, функционирующая под управлением сетевой ОС, и БД. Все остальные компоненты системы, включая СУБД, располагаются на машине клиента
    c) На сервере размещены СУБД, БД и Управление данными. Работа идет по запросам клиента обычно на языке SQL.
    d) На сервере размещены СУБД, БД, Управление данными и Элементы бизнес-логики (триггеры и хранимые процедуры).

    мой вариант: 1-a, 2-d, 3-b, 4-c. и, кажется, я ошибаюсь. укажите, пожалуйста, где?
     
  7. [R]eD

    [R]eD Elder - Старейшина

    Joined:
    1 Aug 2006
    Messages:
    72
    Likes Received:
    1
    Reputations:
    0
    Была таблица (varchar(32)) со значениями 123.156, 5165.561 и т.д.
    Сменил тип на int(32), пропали все значения после точки, есть возможность использовать int с числами после щапятой (с varchar проблемы с order by не правльно сортирует)? Он их попросту не сохраняет, только целые числа.

    Помогите :).
     
  8. nilux

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

    Joined:
    19 Aug 2005
    Messages:
    100
    Likes Received:
    33
    Reputations:
    0
    [R]eD, INT испльзуется для целых чисел вот и пропали. Для чисел с точкой используются NUMERIC или DECIMAL, для большей точности DOUBLE. Ну смотри сам какой тип лучше подойдёт для и твоей СУБД.
     
  9. [R]eD

    [R]eD Elder - Старейшина

    Joined:
    1 Aug 2006
    Messages:
    72
    Likes Received:
    1
    Reputations:
    0
    Покапался, пробывал выставить разные типы, но всеравно с любым он отсикает число которое идет после точки =\
     
  10. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Попробуй FLOAT/DOUBLE
     
  11. [R]eD

    [R]eD Elder - Старейшина

    Joined:
    1 Aug 2006
    Messages:
    72
    Likes Received:
    1
    Reputations:
    0
    Все, работает, спасибо.
     
  12. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    хочу выбрать из таблицы ВСЕ значения, но без повторений по ОДНОМУ полю. How?
     
  13. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    SELECT * FROM `Table` GROUP BY `field`

    или конструкция:

    SELECT DISTINCT
     
  14. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    я эт все пробовал. Я,наверное, непонятно объяснил че нужно. В таблице сть первичный ключ id. Мне нужно выбрать последние 10 записей из таблицы. Но при этом, чтобы не было повторений по ОДНОМУ из полей (повторяющихся полей может быть много).
    distinct отпадает сразу,потому что id полюбому будет разный, а он мне нужен тоже! И еще по причине, что повторяться может не только это поле, по которому нужно фильтровать.
    А group by отпадает потому что если пишу group by id,my_field, оно выводит не последние добавления в таблицу, а по непонятной мне схеме, да и с повторениеми по нужному полю. Вот

    Теперь, чтоб понятние было раскажу че за таблица. В ней хранятся информация о музыкальных альбомах. id,genre,artist,album,tracklist.....
    Допустим исполнитель Iggy Pop, у него много альбомов. То есть уже есть куча полей с artist='Iggy Pop', далее Iggy Pop подходит под 2 жанра, т.е. genre='classic rock' и genre='punk'.Для каждого альбома получается две одинаковых строки с различием, только в жанрах.
    А мне нужно выбрать 10 последних альбомов,но чтобы они не повторялись.
     
  15. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    все... Я допер. Извиняюсь за беспокойство. Надо было так:
    SELECT *
    FROM table
    GROUP BY album
    ORDER BY id DESC
    LIMIT 0 , 10
     
  16. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Срочный вопрос!)

    Есть таблица с полями
    f1,f2,f3,f4,f5
    как мне одним запросом можно сделать другой порядок, например:
    f1,f2,f5,f4,f3

    ?????

    что-то типа ALTER
     
  17. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0

    Вот то, что ты написал по SELECT - бред.
    да и ALTER - не работает.

    А мне надо было переставлять столбцы в соответствии с конфигурацией.

    Решение нашел. Вопрос закрыт.
     
    #537 -=Static=-, 27 Mar 2009
    Last edited: 27 Mar 2009
  18. Glazz

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

    Joined:
    9 Aug 2008
    Messages:
    116
    Likes Received:
    7
    Reputations:
    0
    Эм.. с SQL сильно не знаком, но как можно хранить часть таблици в тексте, чтоб потом её залить в таблицу, при помощи COPY.
    Т.е. мне нужно сделать примерно 300 вставок, и каждый раз писать INSERT как то не то.
     
  19. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Glazz, во-первых, чтобы вставлять с файла тебе нужен будет файлприв, а давать файл прив на публичном веб-сервере - это гиблое дело. Не нужно так делать. Если это единчиная практика, то для этого давно изобрели:

    Code:
    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
        [REPLACE | IGNORE]
        INTO TABLE tbl_name
        [{FIELDS | COLUMNS}
            [TERMINATED BY 'string']
            [[OPTIONALLY] ENCLOSED BY 'char']
            [ESCAPED BY 'char']
        ]
        [LINES
            [STARTING BY 'string']
            [TERMINATED BY 'string']
        ]
        [IGNORE number LINES]
        [(col_name,...)]
    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
        [REPLACE | IGNORE]
        INTO TABLE tbl_name
        [{FIELDS | COLUMNS}
            [TERMINATED BY 'string']
            [[OPTIONALLY] ENCLOSED BY 'char']
            [ESCAPED BY 'char']
        ]
        [LINES
            [STARTING BY 'string']
            [TERMINATED BY 'string']
        ]
        [IGNORE number LINES]
        [(col_name,...)]
    
    О чём вообще речь идёт? О MySQL?
     
  20. Glazz

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

    Joined:
    9 Aug 2008
    Messages:
    116
    Likes Received:
    7
    Reputations:
    0
    MySQL. Т.е. записывать данные в таблицу из файла? хм... а что в качестве файла указывается? путь до файла ? А какой вил имеет этот фаил, чтоб его можно было составить самому.
     
Thread Status:
Not open for further replies.