Forums.Avtograd.Ru: Вопросы по SQL - Forums.Avtograd.Ru

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Вопросы по SQL

#1 Пользователь офлайн   Гаруспик

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 286
  • Регистрация: 28 Ноябрь 07

Отправлено 01 Декабрь 2007 - 04:46

SQL (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный информационно-логический язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

Фундаментальный язык и мощное средство для работы с реляционными БД.
Задаем вопросы. Обсуждаем.

Transgrediaris cadaver proprium!
0


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#21 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 25 Февраль 2008 - 01:24

есть бесплатная версия ms sql и оракла, но она ограниченна в максимальном объеме БД. Я бы (если нет денег) глянул на DB2, это тоже (как и MSSQL и ORECLE промышленная РСУБД), он тоже имеет бесплатную версию, но она не ограничена по объему, там ограничения по кол-ву процов на серваке (вобщем точно не помню почитай).

2 -=MG=-
все зависит от задач, если ты хочешь одновременно читать и писать данные, причем с постоянной бысрой скоростью (ну например у тебя перманентно идут транзакции по продажам и тутже запрашиваются отчеты по остаткам и т.д.) то на бесплытных субд типа sqlite и им подобным ты просто загнешься, т.к. это блокировочники, а если субд блокирует табличу даже при чтении (причем всю) то ступор будет полный, тут нужен промышленный версионник.
0

#22 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 26 Февраль 2008 - 09:54

юзал IBM DB2 7.2 под линуксом (ограничения из-за бесплатности -максимум памяти 2 гига и кол-во одновременных подключений, которое при использовании сервера приложений роли вобще не играет) в целом впечатление хорошее, работает без сбоев с 2002 года
FireBird вещь неплохая, но под небольшие проекты, мной наблюдались серьезные тормоза при открытии базы больше 2 Gb (субд почему то начинает всю базу переписывать во временный каталог, что продолжается 4-5 минут, далее работает нормально) может кто знает как принудительно отключить это? кроме того напрягает отсутствие временных таблиц и кривоватый синтаксис..
А на несерьезные "наколенные" поделки завязываться не хочется, поскольку СУБД - вещь ключевая в серьезном проекте, начнутся тормоза и деадлоки - перечеркнут разом все остальные преимущества программы.
Если женщина не права, нужно извиниться и замолчать.
0

#23 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 26 Февраль 2008 - 10:03

2MG
Уровень MSSQL нужен вовсе не обязательно для крупных проектов (я уже и не говорю о том, что надо еще и определиться, что значит "крупный", но здесь речь не об этом). Другое дело - сервисы, идущие в составе Enterprise-версии MSSQL. То же самое касается Oracle.
Кстати, у обоих этих СУБД есть бесплатные (Express) версии с ограничением в 4Gb и с возможностью безболезненного перехода на "полноценный" движок.


Насчет лицензий - ну у нас лицензионный MS SQL 2005 Standard Edition, скоро будет еще MS SQL 2008 Standard :)
0

#24 Пользователь офлайн   -=MG=-

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 87
  • Регистрация: 30 Декабрь 07

Отправлено 01 Март 2008 - 04:37

Просмотр сообщенияcoldseed (26.2.2008, 10:03):

Насчет лицензий - ну у нас лицензионный MS SQL 2005 Standard Edition, скоро будет еще MS SQL 2008 Standard :)

Я приятно удивлён :)
Интересно, я с десяти попыток угадаю название фирмы?)))

А про сервисы, скорость... ну чем-то всегда приходится жертвовать. Просто чаще всего финансовый вопрос, стоит острее.
реальность субъективна
0

#25 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 11 Март 2008 - 20:19

-=MG=- Попробуй :)
У нас партнерская программа с MS.
0

#26 Пользователь офлайн   xNIGA

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 146
  • Регистрация: 26 Август 09

Отправлено 28 Ноябрь 2009 - 17:58

Есть ли муналы по SQL???
0

#27 Пользователь офлайн   Phenomen

  • фен
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 3 957
  • Регистрация: 01 Ноябрь 07

Отправлено 28 Ноябрь 2009 - 18:05

http://www.mysql.ru/docs/
...
0

#28 Пользователь офлайн   xNIGA

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 146
  • Регистрация: 26 Август 09

Отправлено 28 Ноябрь 2009 - 19:41

Спасибо фен)как всегда первый)
0

#29 Пользователь офлайн   Коля не лох

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 366
  • Регистрация: 21 Апрель 09

Отправлено 22 Январь 2010 - 20:31

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

#30 Пользователь офлайн   DJ-Andrey-sXe

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Ноябрь 07

Отправлено 10 Июль 2010 - 23:09

Просмотр сообщенияКоля не лох (22 Январь 2010 - 21:31):

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

А структуру мы должны сами придумать?

Хорошо, давай допустим, что отношения лежат в таблице relations, а люди в human.

Структура
CREATE TABLE HUMAN (
    ID INTEGER,
    FIO VARCHAR(255),
    SALARY FLOAT
);

CREATE TABLE RELATIONS (
    HUMAN_ID  INTEGER,
    BOSS_ID   INTEGER
);


Запрос (проверен в Firebird 2.1):
select
    (select fio from human where id = human_id),
    (select salary from human where id = human_id) as human_salary,
    (select salary from human where id = boss_id) as boss_salary
from
    relations
where
    (select salary from human where id = human_id)
    <
    (select salary from human where id = boss_id)


В MySQL, вероятно, будет работать запрос попроще:
select
    (select fio from human where id = human_id),
    (select salary from human where id = human_id) as human_salary,
    (select salary from human where id = boss_id) as boss_salary
from
    relations
where
    human_salary < boss_salary


Можно эту же задачку решить иначе:
select
    fio, salary
from
    human
where
    not exists
    (select 1 from relations where boss_id = id)

В реальной жизни в большинстве случаев будет работать правильно.
Потому шта… много вы видели, чтобы подчинённый получал больше своего нащяльника?

И это было очень некрасиво, не дать полностью условия задачи. Под какой сервер? Какой версии? Что за структура базы? А оно и не удивительно, ведь «Коля не лох», чтобы потрудиться всё это расписать подробно :)

Сообщение отредактировал DJ-Andrey-sXe: 10 Июль 2010 - 23:13

1

#31 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 11 Июль 2010 - 00:01

Запрос не учитывает, что у сотрудника могут быть не только прямые начальники, но и "начальники его начальников" и т.д.
То есть по логике он должен быть рекурсивным ;)
Если женщина не права, нужно извиниться и замолчать.
0

#32 Пользователь офлайн   Dms

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 6 290
  • Регистрация: 01 Ноябрь 07

Отправлено 22 Июнь 2011 - 11:10

Есть база данных с компонентами продукта, допустим "Голова-Два-Уха". У продукта есть VIN который распространяется и на его компоненты:

Компонент VIN
Голова 123
Лев. Ухо 123
Пр. Ухо 123
Голова 124
Лев. Ухо 124
Пр. Ухо 124
Голова 125
Лев. Ухо 125
Пр. Ухо 125
Голова 126
Лев. Ухо 127
Пр. Ухо 128


Мне надо считать только полные комплекты, где голова и оба уха и VIN у них одинаковый.
Select count distinct VIN считает только количество разных VIN
Вся софтина работает на aspx и VB
Слепил на коленке за выходные, с программированием зхнаком но отстал лет на 12. :)
0

#33 Пользователь офлайн   Bitihint

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 5 712
  • Регистрация: 01 Ноябрь 07

Отправлено 23 Июнь 2011 - 09:29

логика подсказывает, что если для одного вин возможно только по одному левому и правому уху и одной голове, то считать по 3 вина и говорить что комплект полный увеличивая допустим счетчик и выводя нужные вин. В чем именно сложность?
- Так кто ж ты, наконец?
- Я - часть той силы что вечно хочет зла и вечно совершает благо...
0

#34 Пользователь офлайн   cxz

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 18 Январь 10

Отправлено 23 Июнь 2011 - 09:58

Просмотр сообщенияDms (22 Июнь 2011 - 11:10):

Есть база данных с компонентами продукта, допустим "Голова-Два-Уха". У продукта есть VIN который распространяется и на его компоненты:

во-первых, нашел где спрашивать

хочешь sql, причем тут тогда "aspx и VB"? только если намек на MS SQL
здесь вся загвоздка в "только полные комплекты"
проще реализовать на для каком-нибудь процедурном языке T-SQL, PL-SQL и т.д.
если все же хочется чисто sql, можно что-то типа такого
таблица "продукты": колонка "Компонент", колонка "VIN"
select count (*) from (select count(distinct Компонент), VIN from продукты
group by VIN
having count(distinct Компонент) = (select count(distinct Компонент) from продукты))

этот запрос определяет кол-во полных комплектов по кол-ву разных значений в колонке "Компонент" с одним "VIN"
т.е. определяется (select count(distinct Компонент) from продукты) кол-во возможных разных значений Компонентов, в приведенном примере их 3
0

#35 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 26 Июнь 2011 - 15:14

Чтобы нормально посчитать комплекты, акромя группы (VIN), подгруппы (Компонент) нужен еще и сам ID железки. Да и вообще хранить в таблице строки без уникального идентификатора как то не серьезно. Я бы еще завел справочник, описывающий из каких деталей (и сколько штук) состоит каждый комплект и отталкивался бы от него при подсчете кол-ва комплектов.
В оракле этот запрос достаточно просто реализуется с помощью аналитических функций SUM() OVER (PARTITION BY ...)
Наверняка подобные примочки есть и в MS SQL.
Если женщина не права, нужно извиниться и замолчать.
0

#36 Пользователь офлайн   Alex_pac

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 284
  • Регистрация: 02 Декабрь 07

Отправлено 02 Июль 2011 - 20:44

как сбросить Поле типа счетчик на 0 в базе MS Access?

ALTER TABLE имя_таблицы ALTER COLUMN поле_счетчик COUNTER(1,1)


выполнив такой запрос счетчик начнет отсчет сначала. Будьте внимательны, чтобы в ключевых полях не было совпадений после такой операции.
mac user
0

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей