За последние 24 часа нас посетили 17999 программистов и 1650 роботов. Сейчас ищут 1224 программиста ...

работа с mysql

Тема в разделе "PHP и базы данных", создана пользователем malemail2, 30 апр 2008.

  1. malemail2

    malemail2 Активный пользователь

    С нами с:
    9 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    даров! как можно выбирать строку таблицы по его номеру, т.е. уникального идентификатора нету, а номер - где помещается строка.

    [​IMG]
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Подумай сам и напиши на русском, как выбрать строку, если их порядок неизвестен.
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    malemail2
    Уникальный идентификатор - это и есть в своем роде номер строки, с некоторыми оговорками.
    Добавьте новый столбец и все.
     
  4. malemail2

    malemail2 Активный пользователь

    С нами с:
    9 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    armadillo создали бд. она пусто. добавляем туда что то. там пока 1 строка. еше добавляем, уже 2 строки и т.д. строки добавляются последовательно. можно сказать 1, 2 ... n-я строка. соответственно как выбрать 1 или 2 или n-ю строку с запроса?

    Kreker если удалить какую то строку у уникального идентификатора будет обломок, т.е. если удалить на пр. 21 строку, будет 20, 22, а 21 первого не будет. я хочу чтобы номеры уникального идентификатора соответствовали номерами строк, т.е. в моем примере у 21 строке уникальный идентификатор будет 22.
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    malemail2
    Про эти "оговорки" я и имел ввиду.

    Язык sql таков, что выбрать всего лишь одну строку можно только с помощью условной конструкции с помощью сравнения значений столбца с необходимым (или ограничения LIMIT)
     
  6. malemail2

    malemail2 Активный пользователь

    С нами с:
    9 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    Kreker
    спасибо
     
  7. BS

    BS Активный пользователь

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    Ну можно ввести искусственный rowid почти как в оракле :)

    например, есть таблица test следующего содержания:
    [sql]
    select * from test

    id value
    _______________
    1 22
    3 44
    4 55
    5 11
    8 17
    9 55
    10 88

    [/sql]

    id - автоинкрементируемый ключ, как видим, записи были удалены и номера идут не по порядку

    вводим искусственный ключ

    [sql]
    select @rowid:=0 rowid,null id,null value from dual
    union
    select @rowid:=@rowid+1, id, value rowid from test order by id

    rowid id value
    ____________________________
    0 null null
    1 1 22
    2 3 44
    3 4 55
    4 5 11
    5 8 17
    6 9 55
    7 10 88
    [/sql]

    тут первая строчка с нулевыми значениями образована первым селектом, который нужен для того, чтобы обнулить изначально значение переменной @rowid, иначе это значение будет накапливаться с каждым запросом. Возможно обнулить переменную можно и более изящным способом, если знаете - подскажите.

    теперь, скажем нам нужно взять конкретно 4-ю строчку:
    [sql]
    select * from(
    select @rowid:=0 rowid,null id,null value from dual
    union
    select @rowid:=@rowid+1, id, value rowid from test order by id) t
    where t.rowid=4

    rowid id value
    __________________________________
    4 5 11
    [/sql]

    вот так вот
    все это я написал из чисто академического интереса :) не знаю, есть ли у данного метода практическое применение