Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Открыть новую тему     Написать ответ в эту тему

sergiuz1303



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время суток!
 есть три поля t1 t2 t3 char (255) как получить строку t4 char(255)  
к примеру  
t1   'test                                                '
t2   'tyutiiutiutitiiytiutuy                            '
t3   'kjhkhkjhkhkhkjh                                 '
как получить строку с видом  
t4   'test  tyutiiutiutitiiytiutuy kjhkhkjhkhkhkjh'
 
Заранее благодарен
ПС Срази извиняюсь за ламерский вопрос

Всего записей: 46 | Зарегистр. 11-06-2007 | Отправлено: 23:45 29-08-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
select concat(trim(t1),' ',trim(t2),' ',trim(t3)) from ...

----------
www.MyFirstSite.ru - информационный ресурс для начинающих веб-мастеров

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 00:48 30-08-2008
Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как удалить повторяющиеся записи из связанной таблицы?

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 08:16 12-09-2008
apnss

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как удалить повторяющиеся записи из связанной таблицы?

 
из связанной никак пока есть записи в главной таблицы ссылающиеся на дублирующиеся записи связанной таблицы  
 
для простой таблицы в  MSSQL  
 

Цитата:
 
select distinct * into t3 from t2  
drop table t2  
EXEC sp_rename 't3', 't2'
 

 
Добавлено:
для начала скажи сервер  на котором нужно это сделать

Всего записей: 708 | Зарегистр. 26-02-2002 | Отправлено: 00:02 13-09-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как удалить повторяющиеся записи из связанной таблицы?

Удаляем все записи имеющие дубликаты или оставляем одну, а ее дубликаты удаляем?
Значения всех полей одинаковые или только PK? Какая СУБД - страшная тайна?

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 12:51 15-09-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо делать автоматический апдейт 2-ух tables.
В 1-ом делаю апдейт нескольких полей. Во второй надо добавить рекорды, используя лист of ID измененых рекордов в первом.
Каким образом можно это сделать на уровне stored procedure. База - MS SQL

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 06:31 18-09-2008
sorokin88



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Лучше использовать триггер:
CREATE TRIGGER trig_updateTable1 ON Table1 FOR UPDATE  
AS
INSERT INTO table2 (id_updated) VALUES(SELECT id FROM Deleted)

Всего записей: 4 | Зарегистр. 18-09-2008 | Отправлено: 10:19 18-09-2008 | Исправлено: sorokin88, 10:20 18-09-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
SELECT id FROM Deleted

Уверен насчет Deleted?

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 10:48 18-09-2008
sorokin88



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, Deleted - старый вариант записи, который был до внесения изменений, а Inserted - тот, что с новыми данными. Можно обращаться к обоим.

Всего записей: 4 | Зарегистр. 18-09-2008 | Отправлено: 15:21 18-09-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sorokin88
Вот и я об Inserted...

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 18:22 18-09-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sorokin88 OXDBA
Если это для меня обсуждали, то спасибо. Хотя именно тригер и не подойдет. Он будет срабатывать на любой update, а надо только от данного процесса. Попробую вызывать из самой процедуры.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 19:57 18-09-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сделал с помощью Cursor

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:13 18-09-2008
BigMonster

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если нужно делать автоматически - то можно выполнять из триггера по условию if update(column), либо @@ProcID плюс trigger - если возникнет исключение SQL сам его отрулит. при выполнение операции из процедуры (тем более в курсоре) исключение прервёт операцию, но всё что до этого было выполненно останется т.е. update,insert,delete (если только в процедуре не использовать @@error и не обрабатывать логику исключений...)

Всего записей: 7 | Зарегистр. 31-01-2006 | Отправлено: 06:46 19-09-2008
artemk

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
доброго времени суток!
есть бд из примерно 60 таблиц
нужно найти имя таблицы в которой есть запись "Привет". в каком поле не важно.
Возможно ли это? заранее благодарен

Всего записей: 600 | Зарегистр. 02-02-2006 | Отправлено: 02:32 28-10-2008
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
artemk
Тут два варианта, и оба требуют специфики конкретной СУБД, это не решается в общем случае на стандартном SQL:
- Либо есть некий спец сервис полнотекстового поиска, который натравливается на ранее проиндексированную им БД (напр. для MS SQL Server есть такой)
- Либо пишется вручную перебор всех таблиц и поиск по всем их текстовым полям. Но для этого нужено опять же сначала получить метаданные из БД (так для MS SQL и там, скажем, Firebird/Interbase это делается по разному)

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 23:07 28-10-2008
artemk

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EZH
спасибо
проблема приятеля, дальше для меня темный лес

Всего записей: 600 | Зарегистр. 02-02-2006 | Отправлено: 03:40 29-10-2008 | Исправлено: artemk, 03:43 29-10-2008
DriftK

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EZH
У меня MySQL какой синтаксис запроса для перебора всех таблиц и поиск по всем их текстовым полям?

Всего записей: 2 | Зарегистр. 12-05-2008 | Отправлено: 04:13 29-10-2008
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DriftK
В MySQL 5 есть специальные вьюхи для получения метаданных, которые сгруппированы в INFORMATION_SCHEMA. Так запрос
 
SELECT * FROM INFORMATION_SCHEMA.TABLES
 
даст тебе список таблиц/вьюх c их разными атрибутами (таблицы можно отфильтровать по полю TABLE_TYPE).
А запрос
 
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table_name'
 
дасть тебе список полей конкретной таблицы (текстовые поля отфильтровываются по полю DATA_TYPE).
 
Остается обработать всю эту инфу, и создать по ней нужное количество динамических поисковых запросов.
 
http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 09:02 29-10-2008 | Исправлено: EZH, 09:08 29-10-2008
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
SELECT LEAST(outdate, '2008/09/30') - GREATEST(indate, '2008/09/1') + 1
FROM sometable
WHERE '2008/09/01' <= outdate AND indate <= '2008/09/30'

Реальный запрос несколько сложней, но суть в том, что как записано выполняется и возвращает верный результат. Но вместо констант неоходимо использовать параметры.
 
И так выполняется:

Цитата:
SELECT LEAST(outdate, '2008/09/30') - GREATEST(indate, '2008/09/1') + 1
FROM sometable
WHERE :Date1 <= outdate AND indate <= :Date2

А вот так:

Цитата:
SELECT LEAST(outdate, :Date2) - GREATEST(indate, :Date1) + 1
FROM sometable
WHERE :Date1 <= outdate AND indate <= :Date2
CommandText does not return a result set.
 
Проблема именно в запросе. Пробовал и Delphi, и FastReport. Ошибки в передаче параметров не должно быть.
Кратко поясню. Человек проживал с indate по outdate. Необходимо получить количество дней его проживания с :Date1 по :Date2. Сервер Progress SQL-92 через ADO.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 12:07 02-11-2008 | Исправлено: AlexCoRu, 12:07 02-11-2008
ChiPnGo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно получить первую таблицу из 2х последних, хелп.
 
id    Name IsRoot Parent_id
1    state 1    0    21
2    state 2    0    21
3    state 3    0    21
4    state 4    0    21
5    state 5    0    21
6    type1    0    1
7    type 2    0    1
8    type 3    0    1
9    type 1    0    2
10    type 2    0    2
11    type 3    0    2
12    type 1    0    3
13    type 2    0    3
14    type 3    0    3
15    type 1    0    4
16    type 2    0    4
17    type 3    0    4
18    type 1    0    5
19    type 2    0    5
20    type 3    0    5
21    root    1          NULL
 
id    Name
.    type 1
.    rype 2
.    type 3
 
id    Name
.    state 1
.    state 2
.    state 3
.    state 4
.    state 5
 
 
Добавлено:
Пишут, что нельзя так просто пронумеровать записи по порядку в ms sql. Мб есть варианты?
С остальным проблем нет.
 
Добавлено:
Работает.

Всего записей: 149 | Зарегистр. 25-10-2008 | Отправлено: 20:33 05-11-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru