|
|
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Подскажите, кто знает: Можно ли как нить вытащить данные из ячейки таблицы mysql, зная название столбца и номер ряда по порядку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2005, 20:51:58 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
понятно, раз нет порядка - значит нет и доступа по порядку. Но вот смещение... вот вычислил я с помощью функции count(distinct myfield) смещение нужного мне ряда. Как теперь зная это смещение выудить информацию из этого ряда??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2005, 22:14:09 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
LIMIT? Но вообще более правильным будет использование уникального идентификатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2005, 22:19:10 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Нда. Limit не плохая идея. Только проблема в том что он принимает в качестве аргументов непосредственные числовые значения, а у меня числовое значение полученное с помощю подвыражения (count(distinct myfild). Такое "число" limit не поймет. Уникальный идентификатор тоже неплохая идея вот только как узать в какой строке он расположен - ведь все что мы о нем знаем это название столбца где хранятся уникальные идентификаторы и его смещение вычисленное с помощью все той же count(distinct myfild) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2005, 22:30:01 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
А теперь расскажите, что же на самом деле вам надо (без кивков в сторону count(distinct myfield). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2005, 22:55:17 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
У меня таблица, в которую добавляется информацияя о новых пользователях, в том числе и уникальный идентификатор. Так вот,я хотел сделать так чтобы когда пользователь удалял свою учетную запись его идентификатор не проподал навсегда (идентификаторы добавляются по порядку, т.е. 001, 002 и т.д.), а добавлялся в отдельный столбец все той же таблице. И когда новый пользователь будет регестрироваться и ему надо будет присвоить уникальный идентификатор по задумке должен был осуществляться поиск свободных идентификаторов в этом столбце и только если в столбце нет идетификаторов только после этого пользователью присваивается следующий по порядку номер. Вот у меня и была задача извлечь из столбца свободных идентификаторов последний добавленный. С помощью функции count() я находил его расположение, а как зная положение нужной записи в таблице извлечь ее не знаю до сих пор. Честно говоря я немного удивлен что по таблице нельзя осуществлять навигацию. Я так доадываюсь что эти средства возлагаются на приложения работающие с таблицами mysql. Но ведь есть же оператор limit. С его помощью можно вытащить любую запись или группу записей по их расположению (смещению). Почему бы не пойти дальше и не предоставиь возможность доступа к записи по ее местоположению ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2005, 12:58:52 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Не помешает почитать последные комменты http://sql.ru/forum/actualthread.aspx?tid=240749 . Краткая инфо о РМБД: http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85 ------------------------------- www.free-lancer.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2005, 13:34:07 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Хм... Вообще, часто встречающаяся навязчивая идея как-то следить за суррогатным индексом, надопускать в нём дырок и т.п. ... скажем... малоосмысленна. Тем не менее, вот вам решение: добавляете в таблицу целочисленное поле inactive. При удалении пользователя, ему выставляется 1, а вся персональная информация, которую, возможно, хранить после удаления пользователя в таблице нежелательно, затирается. При создании нового пользователя, осуществляется запрос UPDATE tblame SET ... WHERE inactive=1 ORDER BY id LIMIT 1. Решение в точности соответствует задаче, то есть корявое.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2005, 13:36:45 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
По-моему афтар не понимает ответов. И задача у него простая, достаточно завести состояние записи пользователя и просто скрывать его, а потом подтягивать. Вообще функция count() считает количество цифр, т.е. если афтар знает это количество, значит нужно выбрать последнюю запись из таблицы. В таблице по идее должен бы быть primary key auto_increment, тогда достаточно выьащить запись с максимальным ключем. Он будет последним, но это не решит проблему афтара, зато прямой ответ на вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:21:06 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
можно не добавлять новое поле, а юзать уже имеющееся, например, логин. Объявить его как нулл, соотв-но значение нулл в поле "логин" будет говорить, что данная запись свободна для заполнения. UPDATE tblame SET ... WHERE login is null ORDER BY id LIMIT 1. ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 16:15:19 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
зы можно без ORDER BY. ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 16:16:09 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
maXmoможно не добавлять новое поле, а юзать уже имеющееся, например, логин. Объявить его как нулл, соотв-но значение нулл в поле "логин" будет говорить, что данная запись свободна для заполнения. UPDATE tblame SET ... WHERE login is null ORDER BY id LIMIT 1. Можно и так, конечно, но я обычно накладываю на логин ограничение уникальности.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 16:26:54 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
запамятовал :) ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 17:59:01 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Ограничение уникальности НЕ распространяется на NULL-значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 19:32:43 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Ну мля, можно и пароль заюзать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 10:52:54 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Спасибо за участие. Проблему решил по другому. Раз такие проблемы с идентификатором(который я хотел сохранить для будующих пользователей) то я вообще отказался от него. Теперь его роль будет выполнять уникальное имя пользователя. Два в одном - оно же имя, он же идентификатор. Если пользователь удаляет свою учетную запись, то удаляется и его уникальное имя-идентификатор, следовательно новый пользователь сможет его использовать и самое главное что тут не образуется дыр, как это бы имело место при числовом порядковом идентификаторе, т.к. в именах-идентификаторах порядковость отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 08:44:27 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
И дались вам эти дыры... Ну есть они, и что теперь? А вас не будет волновать, что, скажем, юзер Aaa есть, Aac есть, а Aab нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 08:48:13 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
А если у меня в базе миллион пользователей, одна четверть которых себя удалила (к примеру), тогда вместо идентификатора 250000, мы получим 1000000, т.е. таблица будет больше или вы считаете что это мелочь - капля в море? - Смотря для чего таблица и сколько таких таблиц в базе! А что касается порядковости в именах, то тут деваться некуда, т.к. имя идентифицирующее пользователя в любом случае должно присутствовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 09:01:26 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Однако, аргументация... Кстати, вы в курсе, что гигабайт дискового пространства давным-давно обходится менее 1 доллара? А что размер хранящихся данных в базе зависит сугубо от типа поля, а не его содержимого (для целочисленного типа, по крайней мере)? И что если у вас в базе порядка 250 килопользователей, то и для 250000, и для 1000000 придётся использовать один и тот же MEDIUMINT? Есть статья более общего характера, но очень в тему к такого рода оптимизациям... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 09:22:21 |
|
||
|
Доступ к данным
|
|||
|---|---|---|---|
|
#18+
Неверной дорогой едёте, товарищ octopus. Сколько занимает каждое поле, написано в мане http://dev.mysql.com/doc/refman/4.1/en/storage-requirements.html если поле объявлено как Код: plaintext ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 12:43:35 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33419833&tid=1853328]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
287ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 577ms |

| 0 / 0 |
