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

Вниз

SQL   Найти похожие ветки 

 
SoundB   (2008-07-09 14:59) [0]

Мастера не судите строго, опять вопрос по SQL очень нужна помощь.

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

Если делаю так:

INSERT INTO table1 (ID, NAME, DEPOSIT, DATE) SELECT (select max(id) from tblData) c1.name, c1.deposit, c1.date FROM tblData c1

То, скрипт работает только для одной записи, как можно это дело сделать, подскажите плиз.


 
Тын-Дын ©   (2008-07-09 15:01) [1]

Вопрос философский. А нужно ли копировать?


 
SoundB   (2008-07-09 15:03) [2]


> Вопрос философский. А нужно ли копировать?


Да, очень нужно.

Хотел сделать в дельфи путем While not eof - шеф приказал делать все на SQL. :(


 
Ega23 ©   (2008-07-09 15:04) [3]

СУБД не указана, поэтоу буду считать, что это MSSQL

Declare @x int;
Set NoCount ON;
Select @x=count(*) from tblData;

INSERT INTO table1 (ID, NAME, DEPOSIT, DATE)
 Select ID=@X, name, deposit, date from tblData;


З.Ы. За раздачу именам полей в таблице резервированных слов (name, date) надо ставить к стенке.


 
Ega23 ©   (2008-07-09 15:05) [4]


> Хотел сделать в дельфи путем While not eof - шеф приказал
> делать все на SQL. :(


Слушай шефа, он - мудр. Это на порядки быстрее будет.


 
SoundB   (2008-07-09 15:06) [5]

Прошу прощения, БД Оракул.


 
Правильный^Вася   (2008-07-09 15:08) [6]


> в поле ID первой таблицы нужно сожать максимальное количества
> строк таблицы 1

явно что-то недоговорено, чувствуется, что должно быть "...по id текущей строки"


 
Правильный^Вася   (2008-07-09 15:08) [7]

иначе какой смысл во всех строках одно и то же значение иметь?


 
ketmar ©   (2008-07-09 15:09) [8]

>[5] SoundB (2008-07-09 15:06:00)
а ешё Олега слушай, он фигни не посоветует.

---
All Your Base Are Belong to Us


 
SoundB   (2008-07-09 15:10) [9]


> явно что-то недоговорено, чувствуется, что должно быть ".
> ..по id текущей строки"


Так и есть, просто в свое время наши прогеры Сикенсы не использовали по этому сожаем данные в таблицу 1, с порядковым номером (количество записей + 1)


 
Sergey13 ©   (2008-07-09 15:13) [10]

> [9] SoundB   (09.07.08 15:10)

А "Сикенсы" начальник тоже не велит доделать?


 
Правильный^Вася   (2008-07-09 15:16) [11]


> > явно что-то недоговорено, чувствуется, что должно быть
> "..по id текущей строки"
> Так и есть, просто в свое время  наши прогеры Сикенсы не использовали  
> по этому сожаем данныев таблицу 1, с порядковым номером (количество записей + 1)

совсем запутал
причем тут id+1 если тебе количество считать?


 
Skyle ©   (2008-07-09 15:20) [12]

А кто такие Сикенсы?


 
Skyle ©   (2008-07-09 15:20) [13]


> Skyle ©   (09.07.08 15:20) [12]

Хм... кажется понял, видимо это sequence....


 
SoundB   (2008-07-09 15:55) [14]


> Хм... кажется понял, видимо это sequence....


Да так и есть :)

Люди добрые, подскажите что ни будь на подобие:

> Ega23 ©   (09.07.08 15:04) [3]


Только для оракул, пожалуйста :((


 
Правильный^Вася   (2008-07-09 16:01) [15]

ты не обрисовал задачу
тебе нужно [6] или же max(id)+1


 
Ega23 ©   (2008-07-09 16:02) [16]


> Только для оракул, пожалуйста :((


Это уж ты сам, с ораклом не знаком. Но идея, надеюсь понятная:
1. Заводим переменную
2. Считываем в неё count(*) (или Max(ID), не знаю, чё там у тебя)
3. insert into ..  select from. Вместо ID - подставляешь значение переменной.


 
Ega23 ©   (2008-07-09 16:03) [17]


> max(id)+1


Тогда уж IsNull(Max(ID), 1)+1


 
Sergey13 ©   (2008-07-09 16:03) [18]

> [0] SoundB   (09.07.08 14:59)

Не знаю прокатит ли, неохота пробовать самому, но попробовать можно
INSERT INTO table1 (ID, NAME, DEPOSIT, DATE) SELECT (select max(id) from tblData)+ROWNUM c1.name, c1.deposit, c1.date FROM tblData c1


 
SoundB   (2008-07-09 16:25) [19]


> Не знаю прокатит ли, неохота пробовать самому, но попробовать
> можно


Млин, сработало :))) Класс, спасибо большое. Вы мне жизнь спасли :=)


 
Anatoly Podgoretsky ©   (2008-07-09 16:40) [20]

А что грозились убить?


 
SoundB   (2008-07-09 16:51) [21]


> А что грозились убить?


Ну нет, просто в отпуск не отпустили бы, потом жена меня достала бы, а потом я бы сам застрелился.)))


 
Skyle ©   (2008-07-10 06:19) [22]


> SoundB   (09.07.08 16:51) [21]
>
> > А что грозились убить?
>
>
> Ну нет, просто в отпуск не отпустили бы, потом жена меня
> достала бы, а потом я бы сам застрелился.)))

Застрелить шефа и в тюрьму. И отпуск, и жена не достанет.



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

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

Наверх





Память: 0.5 MB
Время: 0.046 c
3-1204397912
Kley
2008-03-01 21:58
2008.08.24
Бэкап MSSQL2005


2-1216298595
TNT
2008-07-17 16:43
2008.08.24
Масштабирование формы


6-1192529716
Fixi4eeG
2007-10-16 14:15
2008.08.24
Прокси сервер socks5


13-1120547588
Игорь Шевченко
2005-07-05 11:13
2008.08.24
Социологический опрос: нужен ли отдельный форум по .Net ?


15-1215411389
oxffff
2008-07-07 10:16
2008.08.24
Сколько добираться из аэропорта Адлера до Лазаревское.





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