Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 277
от 13.08.2007, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 439, Экспертов: 60
В номере:Вопросов: 4, Ответов: 14


Вопрос № 97707: Вопрос на засыпку! Есть таблица на sql сервере, допустим STR в ней поля kol, sym в формате decimal Делаю запрос с выборкой по заданному условию.... как мне в этом временном запросе зделать что-бы отображалось не sym=33,5 или 33, а чт...
Вопрос № 97708: Необходимо перенести базу с одного сервера на другой. Сам в это не профессионал, т.ч. пишу подробно. Сервер: Версия MySQL-клиента: 5.0.41 MySQL-кодировка: UTF-8 Unicode (utf8) phpMyAdmin - 2.9.2 Сопоставление соединения с...
Вопрос № 97726: Уважаемые эксперты! Помогите создать правильный запрос. Есть таблица.(realkey,Num,Name,Summ,Date_Ins) realkey - ключ. Он уникальный для каждого Name. В таблице повторяется. Num и Summ меняется и дата его изменения - Date_Ins. ...
Вопрос № 97753: Нужна функция или что-то на неё очень похожее :) Перевод любого числа.. допустим 1000,00 в пропись (одна тысяча руб. оо коп. (Возможно такой вопрос задавали и не раз.. но к сожалению не нашел) ...

Вопрос № 97.707
Вопрос на засыпку!

Есть таблица на sql сервере, допустим STR в ней поля kol, sym в формате decimal
Делаю запрос с выборкой по заданному условию.... как мне в этом временном запросе зделать
что-бы отображалось не sym=33,5 или 33, а чтобы отображалсь 33,50 или 33,00 допустим в DBEdit1 ну и в самом запросе чтоб данные поля sym были с нулями...

Отправлен: 08.08.2007, 12:38
Вопрос задал: Mix (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Shveps
Здравствуйте, Mix!
В запросе например так: SELECT CONVERT (varchar(15), sym, 0) FROM STR
А в Delphi лучше подыскать компоненты типа CurrencyEdit или RXCalculatorEdit, которые можно найти в любом стороннем пакете компонентов. Например RX, EhLib.
Советут почитать хелп про форматирование значений CAST и СONVERT.
---------
Пиво ф топку !!! Водку Тоже !!!
Ответ отправил: Shveps (статус: 7-ой класс)
Ответ отправлен: 08.08.2007, 13:09

Отвечает: Кэр Лаэда
Здравствуйте, Mix!

Можно обрабатывать данные уже непосредственно при отображении (т.е. в Delphi) для этого не важен способ выборки данных можно обычный запрос

select sym from str

а при отображении в Delphi использовать функцию FormatFloat
пример по вашему запросу в приложении

Приложение:

---------
Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все

Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 08.08.2007, 15:43
Оценка за ответ: 3
Комментарий оценки:
для отображения в делфи да.. нормальненький такой код.. но.. допустим:
DBEdit5.Text:=FormatFloat('#,##0.00',StrToFloat(DBEdit5.text)) но в запросе как было 30,5 а не 30,00 так и осталось т.е допустим я отчет формирую RaveReports.. используя этот запрос в нём отобразится 30,5 (я знаю, что там есть формат полей) но интерестно веть чтоб сразу данные там отформатированные появлялись.....

Отвечает: Челноков Виктор Альбертович
Здравствуйте, Mix!
Попробуйте следующее:
в запросе указать не sym , a cast(sym as decimal(18,2)) as S должно получиться.
И меняя 2 например на 3 получим три знака после запятой и т.д.
Пробуйте.
Ответ отправил: Челноков Виктор Альбертович (статус: 1-ый класс)
Ответ отправлен: 09.08.2007, 06:55
Оценка за ответ: 2
Комментарий оценки:
Виктор Альбертович , если сделать как вы говорите, то число допустим 22,222 округлится до 22,22 а если число 22,2 то так оно и останется.. и уж никак не прибавится 0


Вопрос № 97.708
Необходимо перенести базу с одного сервера на другой.
Сам в это не профессионал, т.ч. пишу подробно.

Сервер:
Версия MySQL-клиента: 5.0.41
MySQL-кодировка: UTF-8 Unicode (utf8)
phpMyAdmin - 2.9.2
Сопоставление соединения с MySQL: UTF-8_general_ci

Захожу в phpMyAdmin  жму «Экспорт»  выделяю базу  ставлю галочку «Послать»  Скачиваю

При просмотре файла (например, в MySQL Developer Studio) вместо русских символов получаю ремя СЃРѕР∙дания…
Соответственно, после заливки на другой сервер, получаю тот же результат.
Но стоит отметить, что при просмотре базы в самом phpMyAdmin (если не ставить галочку «Послать»), все символы отображаются нормально!

Есть ли способ, это исправить?
Спасибо!

Отправлен: 08.08.2007, 12:40
Вопрос задал: Mikhail (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Oleg S. Mezhov
Здравствуйте, Mikhail!
Все в порядке. Дело в том, что вы пытаетесь порсмотреть файл utf-8 в кодировке win-1251.

Если вы хотите импортировать такую базу, то нужно импортировать, указав в phpMyAdmin, что у файла кодировка utf. Или преобразовать файл в кодировку win-1251, а потом импортировать как обычно.
Ответ отправил: Oleg S. Mezhov (статус: 3-ий класс)
Ответ отправлен: 08.08.2007, 12:49
Оценка за ответ: 5

Отвечает: Gines
Здравствуйте, Mikhail!

Скорее всего все данные экспортируются нормально, просто вам необходимо в программах, через которые вы просматриваете эту базу, указать, что используется кодировка UTF-8. На другом сервере скорее всего кодировка тоже выставлена другая, и лучше её изменить там, чем переводить данные в другую кодировку.
Ответ отправил: Gines (статус: 3-ий класс)
Ответ отправлен: 08.08.2007, 17:31


Вопрос № 97.726
Уважаемые эксперты!
Помогите создать правильный запрос.
Есть таблица.(realkey,Num,Name,Summ,Date_Ins)
realkey - ключ. Он уникальный для каждого Name.
В таблице повторяется.
Num и Summ меняется и дата его изменения - Date_Ins.
Каким образом мне сформировать запрос, чтобы в результирующей таблице были все realkey-Name на самую последнюю дату изменения Date_Ins?
Простыми словами - таблица с договорами и суммами. №договора (Num) и сумма (Summ) меняются во времени (Date_Ins). Мне нужно выбрать все договора, но данные по ним актуальные на сейчас.

Приложение:

Отправлен: 08.08.2007, 14:45
Вопрос задал: Alexander N. Monastyrsky (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: gella
Здравствуйте, Alexander N. Monastyrsky!

Select distinct realkey, name
from table
where Date_Ins = (select max(Date_Ins) from table)
---------
Cos I can.
Ответ отправила: gella (статус: 6-ой класс)
Ответ отправлен: 08.08.2007, 15:00
Оценка за ответ: 1
Комментарий оценки:
"where Date_Ins = (select max(Date_Ins) from table)" - выборка по !одной! дате. А все договора которые изменены были раньше - просто не войдут. Неподходит.

Отвечает: Shveps
Здравствуйте, Alexander N. Monastyrsky!
Если вас понимать буквально "актуальные на сейчас" , то в качестве условия нужно проверять Date_Ins на равенство CONVERT(varchar(24), GetDate(), 102)
А если нужно контролировать актуальность, то можно создать хранимую процедуру. В приложении она приведена. Вызов будет осуществляться EXEC SelectFromTable '10.12.2006' наример.

Приложение:

---------
Пиво ф топку !!! Водку Тоже !!!

Ответ отправил: Shveps (статус: 7-ой класс)
Ответ отправлен: 08.08.2007, 15:04
Оценка за ответ: 4
Комментарий оценки:
Довольно интересный вариант, однако, у меня не получилось вставить хранимую процедуру в файл Акссеса.
И самое главное - я специально указал - не договора, а данные актуальны. Тоесть одни данные договора изменились 01.08.07, другие 12.06.07 и т.д. Номера договоров и суммы могут изменяться в разное время. Нужна гибкая выборка.

Отвечает: Delph
Здравствуйте, Alexander N. Monastyrsky!

SELECT *
FROM Table_Name
WHERE Date_Ins = (SELECT MAX(Date_Ins) FROM Table_Name)

Пояснение: (SELECT MAX(Date_Ins) FROM Table_Name) выбирает максимальное значение из поля Date_Ins, после чего это значение используется для условия отбора строк.
Ответ отправил: Delph (статус: 6-ой класс)
Ответ отправлен: 08.08.2007, 15:07
Оценка за ответ: 3
Комментарий оценки:
"Мне нужно выбрать все договора, но данные по ним актуальные на сейчас. "
А Ваш запрос выбирает только те договора, которые изменение которых произошло позже всех.

Отвечает: Powoditch konstantin
Здравствуйте, Alexander N. Monastyrsky!
Смею предложить свой вариант:
SELECT * FROM TABLE WHERE 1 ORDER BY Date_Ins DESC LIMIT 0,1

Находит все записи, но выводит только одну с наибольшей датой.
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 08.08.2007, 16:09
Оценка за ответ: 1
Комментарий оценки:
Увы, совсем не то.
Стоит наверное внимательно прочитать вопрос. Требуется вывести весь список а не одну запись

Отвечает: Игорь Елизаров
Здравствуйте, Alexander N. Monastyrsky!
Наверное надо чуть доработать запрос предыдущих авторов, а именно

SELECT *
FROM Table_Name
inner join
(select realkey,(max(Date_ins) as dt_max from table_name group by realkey ) tmp
on table_name.realkey = tmp.realkey and table_name.Date_ins = tmp.dt_max
Пояснения.
внутренний запрос создает таблицу с ключевым полем и датой последнего изменения
ну а внешний запрос уже берет данные из таблицы по последней дате каждого договора


---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 08.08.2007, 17:09

Отвечает: Челноков Виктор Альбертович
Здравствуйте, Alexander N. Monastyrsky!
Попробуйте выполнить следующий запрос
SELECT o.realkey,o.Name, o.Date_Ins, o.Num,o.Summ
FROM Table AS o INNER JOIN
(SELECT TOP (100) PERCENT realkey, MAX(Date_Ins) AS Expr1
FROM Table GROUP BY realkey ORDER BY realkey) AS d
ON o.realkey = d.realkey AND o.Date_Ins = d.Expr1
Ответ отправил: Челноков Виктор Альбертович (статус: 1-ый класс)
Ответ отправлен: 09.08.2007, 06:35
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо. Прямо в яблочко. Ну или в хвостик.
Я запрос делаю в ADODB и конструкт "TOP (100) PERCENT" не пошел. Удалил и все получилось. Как я и хотел. Еще раз спасибо


Вопрос № 97.753
Нужна функция или что-то на неё очень похожее :)
Перевод любого числа.. допустим 1000,00 в пропись (одна тысяча руб. оо коп.
(Возможно такой вопрос задавали и не раз.. но к сожалению не нашел)
Отправлен: 08.08.2007, 18:16
Вопрос задал: Mix (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Андрей Тимофеев
Здравствуйте, Mix!
Формат(<?>,)
Синтаксис:
Формат(<Параметр>,<Форматная_строка>)
Назначение:
Возвращает строку с результатом форматирования выражения по заданной форматной строке.
Параметры:
<Параметр> - форматируемое выражение,
<Форматная_строка> - форматная строка.
Форматная строка имеет вид:
для чисел - 'Nm.n<разделитель дробной><разделитель триад>' (в русском регистре вместо N - Ч);
для денежных величин - 'NSMH' (в русском регистре - 'ЧПДС');
для строк - 'Sn' (в русском регистре - 'Сn');
для дат - 'DПодстрокаФормата' (в русском регистре вместо D - Д), где
ПодстрокаФормата может быть вида:
DDMMYY (ДДММГГ), дата в виде - ДД.ММ.ГГ;
DDMMYYYY (ДДММГГГГ), дата в виде - ДД.ММ.ГГГГ;
DDMMMMYYYY (ДДММММГГГГ), дата в виде - ДД месяц прописью ГГГГ;
(0)DDMMMMYYYY ((0)ДДММММГГГГ) этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т.е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ''Д (0)ДДММММГГГГ'') = 01 Января 1999 г.
MMMMYYYY (ММММГГГГ), дата в виде - месяц прописью ГГГГ;
MMMMYY (ММММГГ), дата в виде - месяц прописью ГГ;
QQQQYYYY (ККККГГГГ), дата в виде - N квартал ГГГГ;
QQQQYY (ККККГГ), дата в виде - N квартал ГГ;
YYYYMMDD (ГГГГММДД), дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как строка ''19981110'';
WWWW (НННН), выводит наименование дня недели, соответсвующее указанной дате. Наименования дней недели берутся из файла прописи.
Замечание:
Для чисел: наличие ''0'' перед длиной поля подавляет отображение нулевых значений (выводится пустая строка). Пример: ''Ч015.2'';
Символ ''-'' перед длиной поля означает, что нулевые значения при выводе будут отображаться прочерком. Пример: ''Ч-17.2''.;
Если форматная строка заканчивается символами >X, происходит сдвиг отображаемых разрядов на X позиций.
Если в форматной строке указано ''(0)'', то данная последовательность символов должна быть первой в формате и предшествовать всем прочим спецификациям. При задании такой спецификации все позиции в поле вывода числа, соответствующие незадействованным старшим разрядам, будут заполнены символами ''0''. Например: Формат(123.15, ''Ч (0)10.2'') = 0000123.15;
Подробнее см. в документации, глава 'Системные процедуры и функции'
Удачи.
Ответ отправил: Андрей Тимофеев (статус: 5-ый класс)
Ответ отправлен: 08.08.2007, 18:24
Оценка за ответ: 1
Комментарий оценки:
Андрей Тимофеев как мне показалось, вы не достаточно внимательно прочитали вопрос.. единственное, что добавлю это, то что перевод осуществить нужно в Delphi и только потом результат вставлю в sql запрос... если можно эт как-то проще решить я только за..

Отвечает: Проходящий Мимо
Здравствуйте, Mix!

Ссылка
Здесь около 15 вариантов решений задачи "Сумма прописью".
В приложении, для желающих, рабочий вариант для украинского языка.
Удачи.

Приложение:

---------
Carpe diem!

Ответ отправил: Проходящий Мимо (статус: 9-ый класс)
Ответ отправлен: 09.08.2007, 09:46
Оценка за ответ: 5
Комментарий оценки:
Проходящий Мимо ........ Благодарствую за правильное понимание вопроса..... и уделённое внимание , этого варианта вполне достаточно..

Отвечает: Челноков Виктор Альбертович
Здравствуйте, Mix!
Выслал на почтовый адрес функцию попробуйте. У меня вроде бы работает MS SQL 2005.
Ответ отправил: Челноков Виктор Альбертович (статус: 1-ый класс)
Ответ отправлен: 09.08.2007, 19:51


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное