Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Вниз

Aизический номер записи в таблице через SQL запрос   Найти похожие ветки 

 
pavelsinicinV   (2002-11-03 20:29) [0]

Нужно узнать физический номер записи в таблице через SQL запрос, аналогично функции RECNO() для Table.


 
Ihor Osov'yak   (2002-11-03 20:35) [1]

Большинство НОРМАЛЬНЫХ движков баз даных не имеют такого понятия как физический номер записи (во всяком случае документированого).
И в теории реляционных баз такого понятия нет. Ибо на практике это почтьи никогда не нужно. А если и нужно, то в 90 процентах случаев это есть следствие не совсем правильного проетирования структуры базы данных.



 
pavelsinicinV   (2002-11-03 20:53) [2]

я вообще то в курсе, но заморочка в другом.... что как бы это я не знал имеется две таблицы которые между собой связаны по одному полю через физический номер записи в другой таблице.
Как быть ?


 
Anatoly Podgoretsky   (2002-11-03 21:05) [3]

В могилу


 
MsGuns   (2002-11-03 21:10) [4]

Две таблицы НЕ МОГУТ БЫТЬ СВЯЗАНЫ ЧЕРЕЗ ФИЗИЧЕСКИЙ НОМЕР. Т.к. невозможно придумать вообще такую связь и главное, зачем она нужна. Если нужна связь мужду таблицами "Один-ко-многим", то для этого используют УНИКАЛЬНЫЕ КЛЮЧИ (идентификаторы), которые ОДНОЗНАЧНО идентифицирую СВОЮ запись среди всех в НД.
Типичный пример (кадровая структура):

Таблица 1. Главная. Список сотрудников

1. IDN integer Уникальный номер чела (Primary Key)
2. FIO VARCHAR Фамилия
3. Name VARCHAR Имя
....

Таблица 2. Подчиненная. Состав семьи сотрудника
1. IDNF integer Уникальный номер члена семьи (Primary Key)
2. IDN integer Уникальный номер чела (Primary Key)
(используется для связки с Главной "Много к одному"
3. FFIO VARCHAR Фамилия
....

Часто поля-идентификаторы делают AUTOINC для того, чтобы НЕ ЗАБОТИТЬСЯ О УНИКАЛЬНОСТИ создаваемого автоматически ключа. Хотя в некоторых БД (Paradox, например) автоинкременты создаются не всегда уникальными, что приводит к сбоям.
Недостаток автоинкремента - невозможность узнать его значение при вставке до того, как запись будет постирована в БД (Иногда это бывает весьма жедательно, хотя и не необходимо).



 
pavelsinicinV   (2002-11-03 21:15) [5]

А де подсказка ? или совет ?


 
pavelsinicinV   (2002-11-03 21:19) [6]

Наверно я не совсем точно выразился .......
Я хотел сказать что содержимое поля "А" -содержит физический номер записи в другой таблице "В".
И я хотел бы через SQL если это возможно определить у таблицы "В" номер записи.


 
MsGuns   (2002-11-03 21:27) [7]

>pavelsinicinV (03.11.02 21:19)
>Наверно я не совсем точно выразился .......
>Я хотел сказать что содержимое поля "А" -содержит физический номер записи в другой таблице "В".
>И я хотел бы через SQL если это возможно определить у таблицы "В" номер записи.

В dbf, конечно, есть такое понятие как "Номер записи". Но если этот номер указывается в качествее ссылки в другой таблице, то возникает вопрос:
Если я удалил из первой таблицы 1-ю по порядку запись, то у всех остальных она по идее изменится на 1 минус. Так что, во второй таблице делать сквозной декремент ссылок ? Товарищ, ты или что-то не договариваешь или это просто ну СОВЕРШЕННО УНИКАЛЬНАЯ БД, где связи между таблицами протянуты черех их физические номера.
Хотя если такая таблица не редактируется (типа трансферной с какой-то пакетной инфой), то это, возможно, и имеет какой-то смысл..


 
Ihor Osov'yak   (2002-11-03 21:37) [8]

Советы

Вариант 1. Снять штаны и спеть разлуку. (В оригинале звучит так:
Знімай штани, співай розлуку)
Вариант 2 (в продолжение варианта 1).
- Сделать копию базы (на всяк случай и чтобы потом помнить дурь свою)
- Во вторую табличку ввести доп. поле, которое будет ключом . Если его нельзя сделать ключом - придется забыть про ссылочную целосность, но об этом потом. Если его нельзя сделать ключом, то сделайте по нему хотя бы уникальный индекс.
- С помощью какой-то матери, Господа Бога, кувадлы, шаманских заклинаний, примитивной програмулины, ручками собственными или всего отдела бухгалтерии или автоватизации занисите в это поле значения той штоковины, что Вы понимаете под физическим номером записи в Вашем случае.
- после выполнения пред пункта напрочь забудте про такое понятие, как физический номер.
- создайте связь (внешний ключ) между первой и второй табличкой, используя вновь созданое поле - конечно, если вновь созданое поле вам удалось задействовать в качестве праймери ки. Если этого в силу каких-то не очень убедидельных доводов все-же не сделано - наложите уникальный индекс. Это во всяком случае подымет быстродействие запросов, где эти таблички обьединяются по вновь созданому полю. Конечно это не будет гарантироать ссылочной целосности.
- впредь такой глупости не делать самому и бить другим по рукам, в случае попытки это делать
- надеть штаны и закончить петь разлуку. Или просто сменить мотив.


 
MsGuns   (2002-11-03 23:09) [9]

>Ihor Osov"yak © (03.11.02 21:37)

Ну зачем же сразу по жопе-то ? Может, огурец все сделал верно (или кто-то до него), просто объяснить толком не мо ? Ну не верю я, что кто-то в здравом уме мог до ТАКОГО додуматься. Может просто pavelsinicinV понимает под ФИЗИЧЕСКИМИ номерами записей их уникальные индексы (ключи, идентификаторы,- обзови их хоть шахтерской лопатой) ?


 
Ihor Osov'yak   (2002-11-03 23:28) [10]

2 MsGuns © (03.11.02 23:09)

Да потому, что иногда полезно.... Да и без злости я особой, так, любя (для начала). Ну, а в плане соображоловки, слегка не туда повернутой - фантазия кулибиных границ не имеет .. Не раз приходилось в этом убеждатся и иногда даже разгребать. Вообще то, этот случай, как бы сказать, уникальный ... Ну разве что, см. MsGuns © (03.11.02 21:27), последнее приложение..

И на последок, про шахтерскую лопату - если это так, то взбучка тем более необходима. Чтобы вредь осознал, что собеседник воспринимает то, что ему говорят, а не то, что в говорящего на уме...





 
MsGuns   (2002-11-03 23:33) [11]

>Ihor Osov"yak © (03.11.02 23:28)

>Чтобы вредь осознал

:))))))))))


 
Ihor Osov'yak   (2002-11-04 01:43) [12]

2 MsGuns © (03.11.02 23:33)

Вообще-то должно быть впредь, но так даже более подходит.

2 pavelsinicinV - сорри за наезды, смею надеятся, что Вы сделаете конструктивные выводы.


 
Бланк   (2002-11-04 09:00) [13]

А насчет номера... Блин я такие вещи видел в двух программах (одна слава богу приказала долго жить): у ГАИшников и мое рабочее ПО, разработанное ВЫДАЮЩЕЙСЯ компанией "КомпьютерИнтерСервис", г.Киев, мать их !..


 
Anatoly Podgoretsky   (2002-11-04 09:09) [14]

Такое иногда бывает в фокспро, там есть такая возможность устроить себе быструю смерь. Право такой индекс (связь) имеет на существование, но только на ограниченное время для временных таблиц



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.007 c
3-69104
Jak
2002-11-01 16:26
2002.11.21
Помогите победить MS SQL Server v 7.0


1-69373
The_Vizit0r!
2002-11-08 22:24
2002.11.21
Может кто подскажет?


1-69419
AndreyAG
2002-11-11 10:36
2002.11.21
Динамические массивы в классах


1-69407
Eva
2002-11-10 18:06
2002.11.21
Экспортирование отчетов FastReport в Excel


1-69408
Barmaglot
2002-11-11 00:46
2002.11.21
Преобразование величины ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский