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

Вниз

Несколько вопросов о SQL   Найти похожие ветки 

 
_toltec   (2003-04-20 20:09) [0]

1. Как узнать используется кем-нибуть таблица?
2. Есть таблица

Create table Tab1
(
f1 varchar(10),
f2 integer
)

вней есть две одинаковые стоки.
как с помощью delete from удалить одну из них?

3. Почему при использование Upper в параметре которого строка
из русских букв он непереводит ее в верхний регистр?


 
Rad   (2003-04-20 20:51) [1]

1. В каком смысле?
Но, вообще, никак - нет в FB блокировки на уровне таблицы

2. rdb$db_key (см http://www.ibase.ru/devinfo/deldupes.htm)

3. Стандартная Upper не поддерживает неанглийские кодировки. Надо использовать UDF (например, RFunc - http://www.ibase.ru/d_udf.htm)


 
Rad   (2003-04-20 20:54) [2]

Стандартная Upper не поддерживает неанглийские кодировки. Надо использовать UDF

Ну или делать базу, как написано тут: http://www.ibase.ru/devinfo/ibrusfaq.htm


 
Zacho   (2003-04-21 08:23) [3]


> Rad © (20.04.03 20:51)
> 1. В каком смысле?
> Но, вообще, никак - нет в FB блокировки на уровне таблицы

Неверно, есть. Смототри SNAPSHOT TABLE STABILITY (consistency)
Подробно читать в Language Reference и http://www.ibase.ru/devinfo/ibtrans.htm


 
Rad   (2003-04-21 08:43) [4]

>> Но, вообще, никак - нет в FB блокировки на уровне таблицы
> Неверно, есть.
Вай-вай, че-то я совсем уже плохой стал.
Да, конечно, есть.
Но узнать, кем она используется все равно нельзя. Да и узнать, что вообще используется - обычно тоже (кроме, разумеется случая с SNAPSHOT TABLE STABILITY)


 
Johnmen   (2003-04-21 09:46) [5]

>Zacho © (21.04.03 08:23)
>Rad © (21.04.03 08:43)
>Вай-вай, че-то я совсем уже плохой стал.
>Да, конечно, есть.

Блокировок нет вообще никаких !
Есть только некие способы имитировать их для постороннего наблюдателя...:)


 
Соловьев   (2003-04-21 11:41) [6]


> 3. Стандартная Upper не поддерживает неанглийские кодировки.
> Надо использовать UDF

а как же upper(field collate PXW_CYRL)


 
NickBat   (2003-04-21 11:44) [7]

Удалить дублирующиеся записи можно и так:

delete from test
where f1 in
(select f1
from test
group by f1
having count(f1)>1)

Проверено на Firebird диалект 1.


 
Zacho   (2003-04-21 11:52) [8]


> NickBat © (21.04.03 11:44)

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


 
NickBat   (2003-04-21 12:58) [9]

> Zacho © (21.04.03 11:52)
Так удалятся записи у которых дублируется поле f1, при этом по одной записи останется. Можешь проверить.


 
Zacho   (2003-04-21 13:18) [10]


> NickBat © (21.04.03 12:58)

Сейчас проверил на YA 854. Вообще какая-то фигня получается.
Итак: CREATE TABLE TEST (F1 INTEGER)
Заполняем: 1,1,3,4,4,2,2
Выполняем запрос NickBat © (21.04.03 11:44)
Получаем: 1,1
Выполняем второй раз, остается одна запись со значением 1
Ужас какой-то. Баг (или фича) в этой сборке YA ??
И все равно я уверен, что должен быть ПК и проблем таких не будет.


 
Соловьев   (2003-04-21 13:20) [11]

согласен с PK. его то и делать всего-то ничего...


 
Johnmen   (2003-04-21 13:41) [12]

WI-V6.2.908 Firebird 1.0

Указанный запрос срабатывает, как ожидается. Что и понятно, т.к. логика работы сервера предполагает выполнение подзапроса на каждую анализируемую для удаления запись. Но ! На данное поведение оптимизатора сервера - его личное дело. И нет гарантий, что в другой сервер сначала выполнит селект, а потом делете. А в этом случае данный запрос некорректен.


 
Zacho   (2003-04-21 13:44) [13]


> Johnmen © (21.04.03 13:41)

Согласен. Но меня сильно удивило, что Дятел 1.1.854 удалил единственную запись с F1=3


 
NickBat   (2003-04-21 13:49) [14]

> Johnmen © (21.04.03 13:41)
А я и написал Firebird. :))
А вообще-то до такой ситуации (дублирование записей) лучше не доходить.


 
Johnmen   (2003-04-21 14:02) [15]

>Zacho © (21.04.03 13:44)

Мне это тоже крайне удивительно...Т.к. логика не прослеживается...:)))



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

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

Наверх





Память: 0.47 MB
Время: 0.008 c
3-23027
AleksandrKu
2003-04-18 12:49
2003.05.08
Количество записей в Select?


1-23166
alt7
2003-04-23 17:27
2003.05.08
Булевы глюки


14-23376
earthman
2003-04-21 15:41
2003.05.08
Зацените сайт


3-23031
lia
2003-04-18 13:02
2003.05.08
Восстановление MSSQL базы.


3-22978
zom
2003-04-16 14:12
2003.05.08
проверка связи ADOConnection...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский