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

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

  Все выпуски  

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 370
от 13.05.2008, 07:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 476, Экспертов: 49
В номере:Вопросов: 9, Ответов: 15

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 134623: Доброго времени суток, уважаемые эксперты. Вообще моя задача выполняется на FastReports и Delphi 7, но думаю что данный момент, который мне не понятен нужно реализовать в самом запросе SQL. Имеется N количество пользователей, в таблице ...
Вопрос № 134684: БД Access. Если в поле А вводим число1, то в поле Б должно появиться число 5; если в поле А вводим 2, то в поле Б должно появиться число 4,4. Если в поле А вводим число 3, то в поле Б должно повиться число 3,4. Если в А вводим 4, то в Б появится 2, ...
Вопрос № 134736: Здравствуйте, други! Как в MySQL узнать, какие даты в столбце последние и выбрать фиксированное число записей, скажем, 10 последних?...
Вопрос № 134751: Здравствуйте! В чём загвоздка? Вот эти запросы не выполняются: select count(*) from anecdots where category is NULL select count(*) from anecdots where category='after' столбец category - set-тип работаю из РНР...
Вопрос № 134852: Уважаемые эксперты есть вопрос .. как составить запрос. для такого макета данных есть таблица с объектами объектов в ней для нас важнее всего id объекта во второй таблице хранятся атрибуты объекта в таком формате id,ImiaAtributa,Znachenie...
Вопрос № 134872: Здравствуйте! Хочу сделать на сайте выборку событий по дате, наподобие "Этот день в истории". Как сделать запрос, который сопоставлял бы только месяц и день с хранимыми в базе? Возможно ли такое средствами одного MySQL? Ра...
Вопрос № 134882: Уважаемые коллеги! Впервые столкнулся с необходимостью работы с Sybase SQL Anywhere - во многом не могу разобраться: 1) SQL Anywhere это бесплатная СУБД (вроде MSDE/SQL Express)? 2) Если да, то как получить регистрационный ключ для дистрибутива, кото...
Вопрос № 135356: Здравствуйте! Такая задача: есть таблица сотрудники, в ней 2 поля - имя_сотрудника, дата выхода на работу(dd.mm.yyyy). Вопрос: как написать запрос, чтобы можно было вывести только 3-х первых по дате сотрудников? Спасибо!...
Вопрос № 135401: Здравствуйте, господа Эксперты! Вопрос по <b>Firebird 2.0</b>. База данных и клиентское приложение находятся на разных машинах. Нужно ли на клиентском компьютере полностью ставить Firebird или достаточно положить рядом с программой одну или ...

Вопрос № 134.623
Доброго времени суток, уважаемые эксперты.
Вообще моя задача выполняется на FastReports и Delphi 7, но думаю что данный момент, который мне не понятен нужно реализовать в самом запросе SQL.

Имеется N количество пользователей, в таблице Users.
Выводится сначало пользователь, затем выводятся все записи из таблицы Contacts относящиеся к данному пользователю. Это работает.

Но мне нужно немного переделать задачу, необходимо напротив имени каждого пользователя вывести количество звонков, то есть, не выводя записи из таблицы Contacts, вывести количество этих записейю
Надеюсь описал задачу доступно, буду благодарен любым ответам. Зарание спасибо!
Отправлен: 29.04.2008, 07:44
Вопрос задал: Mukomelo Yevgeniy Bogdanovich (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Игорь Елизаров
Здравствуйте, Mukomelo Yevgeniy Bogdanovich!

Это можно сделать достаточно просто группировкой

select users.id,users.fio, count (contact.id)
from users left join contact on users.id = contact.users_id
group by users.id, users.fio

то есть группируем по фамилии пользователя и выводим количество контактов по этому пользователю. Предполагаю, что в Contacts поле для юзера - users_id


---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 29.04.2008, 08:49
Оценка за ответ: 5
Комментарий оценки:
Да, вполне помогло большое спасибо за ответ. Буду нынче знать сей прием=)

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Mukomelo Yevgeniy Bogdanovich!
Решить Вашу задачу можно и запросом с вложением:
select Fio, Id, (select count(user_id) from contact where user_id=Id) from users
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 29.04.2008, 22:10


Вопрос № 134.684
БД Access. Если в поле А вводим число1, то в поле Б должно появиться число 5; если в поле А вводим 2, то в поле Б должно появиться число 4,4. Если в поле А вводим число 3, то в поле Б должно повиться число 3,4. Если в А вводим 4, то в Б появится 2, а если в поле А ввели число 5, то в Б должно появиться число 1. Как реализовать?
Отправлен: 29.04.2008, 15:03
Вопрос задала: Gallya61 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Игорь Елизаров
Здравствуйте, Gallya61!
встречный вопрос - а числа надо вводить или выбирать ?

я бы сделал через таблицу перекодировки
то есть форма (точнее поле Б ) отображает запрос к таблице перекодировки
ну а запрос выдает значение поля Б в зависимости от поля А

примерно такой
select Поле_Б from Перекодировка
Where Поле_А = form![имя формы]![Поле А]


---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 29.04.2008, 17:55
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо! Попробую. Дело в том, что я не совсем большой спец, но попытаюсь разобраться...


Вопрос № 134.736
Здравствуйте, други!

Как в MySQL узнать, какие даты в столбце последние и выбрать фиксированное число записей, скажем, 10 последних?
Отправлен: 29.04.2008, 20:12
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Прим Палвер!
Если в запросе отображать 10 записей и выполнить сортировку по убуванию поля даты:
SELECT top 10 ....... ORDER BY dDate DESC;
Ваша задача будет решена.
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 29.04.2008, 22:24
Оценка за ответ: 5
Комментарий оценки:
Не ожидал такой простоты. Спасибо!
Не чёркните ещё один ответ на другой мой вопрос?

Отвечает: Загиров Рустам / Stamm
Здравствуйте, Прим Палвер!
Надо использовать LIMIT - ограничение на количество записей, вместе с ORDER BY - упорядочиванием по какому-либо полю(полям) :
SELECT * FROM table
ORDER by pole_date DESC
LIMIT 10


DESC означает, что сортировать надо от высшего к низшему.
---------
Этот мир обречён на нас
©Сергей Маврин
Ответ отправил: Загиров Рустам / Stamm (статус: Специалист)
Ответ отправлен: 29.04.2008, 23:32
Оценка за ответ: 5
Комментарий оценки:
Тоже спасибо.
Больше всё-таки первы ответ интересовал :)

Отвечает: Чаднов Н
Здравствуйте, Прим Палвер!
Вам поможет ORDER BY и LIMIT

Приложение:

Ответ отправил: Чаднов Н (статус: 3-ий класс)
Ответ отправлен: 30.04.2008, 02:21
Оценка за ответ: 5
Комментарий оценки:
Спасибо!
Помогите ещё с этим:
http://rusfaq.ru/info/question/134767


Вопрос № 134.751
Здравствуйте!

В чём загвоздка? Вот эти запросы не выполняются:

select count(*) from anecdots where category is NULL
select count(*) from anecdots where category='after'

столбец category - set-тип

работаю из РНР
Отправлен: 29.04.2008, 22:32
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Santana
Здравствуйте, Прим Палвер!
первый запрос не работает потому, что в агрегатных функциях значения NULL не учитываются
второй ... скорее всего потому, что нет такого значения. Попробуйте
select count(*) from anecdots where category like '%after%'
Ответ отправил: Santana (статус: 9-ый класс)
Ответ отправлен: 29.04.2008, 23:41
Оценка за ответ: 5
Комментарий оценки:
Есть. Пробовал. Не работает и так. Я спрашивал, как, чтобы заработало.


Вопрос № 134.852
Уважаемые эксперты есть вопрос .. как составить запрос.
для такого макета данных
есть таблица с объектами объектов в ней для нас важнее всего id объекта
во второй таблице хранятся атрибуты объекта в таком формате id,ImiaAtributa,ZnachenieAtributa

а теперь ближе к делу есть два атрибута ДатаНачала и ДатаКонца

в процедуру передается какая то дата и нужно выбрать только те объекты у которых дата попадает в их диапазон ДатаНачала и ДатаКонца, но загвоздка в том что даты конца может не быть и соответственно как сделать такую выборку... чего то затрудняюсь.. может кто поможет ?
Отправлен: 30.04.2008, 19:09
Вопрос задал: Кэр Лаэда (статус: Практикант)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Кэр Лаэда!
возможно подобная конструкция Вам подойдет:
SELECT * FROM Table
where (fdate1>=vdate and fdate2<=vdate) or (fdate1>=vdate and fdate2 Is Null)
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 30.04.2008, 20:37
Оценка за ответ: 3
Комментарий оценки:
"даты конца может не быть"
т.е. нет строки с датой конца т.е. Is Null тут не пойдет

Отвечает: Zinaida
Здравствуйте, Кэр Лаэда!
Если я правильно поняла, то, возможно, Вам подойдет такой вариант запроса:
select * (перечисляете нужные для вывода поля) from Table1, Table2
where Table1.id=Table2.id and ((data between ДатаНачала and ДатаКонца) or
(data>=ДатаНачала and ДатаКонца is null))
Если объекты, в которых ДатаКонца нет, не нужно выводить в запросе, то меняется
только часть запроса во фразе where:
where Table1.id=Table2.id and ДатаКонца is not null and (data between ДатаНачала and ДатаКонца)
Ответ отправила: Zinaida (статус: 2-ой класс)
Ответ отправлен: 30.04.2008, 20:50
Оценка за ответ: 3
Комментарий оценки:
то же что и в предыдущем ответе, если бы все было так просто то вопросов бы не было, если бы была запись с атрибутом "ДатаКонца" но не было значения, а так как записи вообще нет то тут и возникает вопрос.. как это сделать

Отвечает: Игорь Елизаров
Здравствуйте, Кэр Лаэда!
тогда получается, что надо проверять наличие самого атрибута..
получается несколько сложнее
select * from table
inner join
(
--это вложенный запрос, который формирует табличку из трех колонок
-- ID, Начало и окончание
-- в этом запросе фильтровать по дате окончания еще нельзя
select Table_attribut.id, table_attribut.ZnachenieAtributa as 'Начало',
t_a1.ZnachenieAtributa as 'Окончание'
from table_attribut
where table_attribut.ImiaAtributa='ДатаНачала'
and table_attribut.ZnachenieAtributa <=vdate
left join table_attribut t_a1 on table_attribut.id = t_a1.id
and t_a1.ImiaAtributa='ДатаОкончания

group by table_attribut.id, table_attribut.ZnachenieAtributa , t_a1.ZnachenieAtributa
) t on table.id = t.id
where 'Окончание' >=vdate or 'Окончание' is null
попробуйте
---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 01.05.2008, 08:35


Вопрос № 134.872
Здравствуйте!

Хочу сделать на сайте выборку событий по дате, наподобие "Этот день в истории". Как сделать запрос, который сопоставлял бы только месяц и день с хранимыми в базе? Возможно ли такое средствами одного MySQL?

Работаю с РНР.
Отправлен: 30.04.2008, 23:58
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sattar
Здравствуйте, Прим Палвер!
Для решения проблемы используйте конструкцию LIKE.

Приложение:

---------
Programming is like sex, one mistake and you have to support it for the rest of your life.

Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 01.05.2008, 00:30
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Но наверное, буду разделять на пару столбцов. И по-другому. И не в формате даты вообще хранить, а в числах. Мне ведь нужны и годы до эпохи Юникса :)


Вопрос № 134.882
Уважаемые коллеги! Впервые столкнулся с необходимостью работы с Sybase SQL Anywhere - во многом не могу разобраться: 1) SQL Anywhere это бесплатная СУБД (вроде MSDE/SQL Express)? 2) Если да, то как получить регистрационный ключ для дистрибутива, который раздают с сайта Sybase?- уже несколько раз заполнял регистрационную форму, обещают прислать в течении нескольких минут - и ничего. 3) Power Designer, о котором идет речь на сайте - это инструмент разработки приложений (вроде Express Studio), или что?, имеет ли он какое либо отношение к Power Bulder? 4) Какие ресурсы по Sybase можете порекомендовать (книги, сайты, форумы и т.п.). Спасибо.
Отправлен: 01.05.2008, 04:12
Вопрос задал: Титов Михаил Анатольевич (статус: 5-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Santana
Здравствуйте, Титов Михаил Анатольевич!
1) Увы и ах ... не бесплатная. Это так называемый десктопный вариант базы данных Sybase. Sybase ASA, промышленная база SybaseASE.
2) Чесно сказать, не знаю. Мы работаем с SybaseASE, но у нас закупка централизованная через ГО
3) Power Designer - это инструмент для визуального построения баз данных, так называемой модели базы данных. ТЕ там можно построить эту самую модель (причем строятся все объекты ... какие только можно). Потом можно сгенерить скрипты. И применяя их построить базу со всеми ее обектами. Очень одобно и для хранения информации по структуре базы ... своего рода документатор. Ну а также все изменения базы и ее объектов, тоже можно через нее (генерит скрипты типа alter table ...).
4) http://www.sybasedevel.ru/, http://www.sypron.nl/main.html, http://www.sql.ru/forum/actualtopics.aspx?bid=30. на каком-то можно и доку скачать ... и даже на русском
Ответ отправил: Santana (статус: 9-ый класс)
Ответ отправлен: 05.05.2008, 10:25
Оценка за ответ: 5
Комментарий оценки:
Спасибо, весьма признателен!


Вопрос № 135.356
Здравствуйте!
Такая задача: есть таблица сотрудники, в ней 2 поля - имя_сотрудника, дата выхода на работу(dd.mm.yyyy).
Вопрос: как написать запрос, чтобы можно было вывести только 3-х первых по дате сотрудников?
Спасибо!
Отправлен: 04.05.2008, 22:48
Вопрос задал: Usarios (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Игорь Елизаров
Здравствуйте, Usarios!

Этот запрос отбирает троих с самыми старыми датами

select top 3 name from table order by date_job

Для того, чтобы отобрать три самые свежие записи, надо просто изменить порядок сортировки

select top 3 name from table order by date_job desc
C уважением, Игорь

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

Отвечает: Nomadfromx2007
Здравствуйте, Usarios!
Смотрите примерный запрос, который выбирает 3 самых близких по дате выхода сотрудников.

Приложение:

Ответ отправил: Nomadfromx2007 (статус: 2-ой класс)
Ответ отправлен: 08.05.2008, 01:34


Вопрос № 135.401
Здравствуйте, господа Эксперты!

Вопрос по Firebird 2.0. База данных и клиентское приложение находятся на разных машинах. Нужно ли на клиентском компьютере полностью ставить Firebird или достаточно положить рядом с программой одну или несколько динамических библиотек? Во втором случае - какие именно нужны?
Отправлен: 05.05.2008, 11:41
Вопрос задал: Delph (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Delph!
На клиентском компьютере достаточно поставить только клиентскую часть. Это опция выбирается при установке штатным инсталятором.
На самом деле в каталог Windows добавляется одна dll под двумя именами - fbclient.dll и gds32.dll
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 05.05.2008, 11:48
Оценка за ответ: 5
Комментарий оценки:
Спасибо, сработало! Обе указанные библиотеки положил рядом с программой, после чего спокойно запустил прогу с клиентской машины без установки Firebird.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.92 pre 5.0 RC2 от 09.05.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное