![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Vit |
|
||||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Решил написать очень(!) краткий пример промышленной бызы данных и примеры запросов для получения самых насущных сведений. Надеюсь такой простой пример поможет тем кто делает первые шаги в мир баз данных понять как оно там работает, а так же ознакомиться с простыми примерами SQL запросов.
У нас есть предпиятие, "Рога и копыта" которое предоставляет некоторый спектр услуг клиентам: Таблица Clients - клиенты Id Autoincrement - порядковый номер записи, ID код клиента First varchar(30) - имя клиента Last varchar(30) - фамилия клиента Phone varchar(10) - телефон клиента Created datetime - дата внесения клиента В заполненном виде: ID First Last Phone Created 1 Иванов Иван 33-44-55 01.01.2005 2 Петров Петр 12-23-34 02.01.2005 3 Сидоров Сидор 24-36-48 03.02.2005 Таблица Services - предоставляемые услуги Id Autoincrement - порядковый номер записи, ID сервиса Name varchar(100) - название сервиса Amount float - цена услуги В заполненном виде: ID Name Amount 1 Продажа рогов $10.99 2 Продажа копыт $12.95 3 Продажа хвостов $15.75 Таблица Payments - продажи услуг Id Autoincrement - порядковый номер записи, номер транзакции Service int - id проданного сервиса Client int - id клиента TransactionDate datetime - когда прошла оплата Amount float - сумма переведенных денег Id Service Client TransactionDate Amount 1 1 2 01.02.2005 $10.99 2 1 1 02.02.2005 $10.99 3 1 2 11.02.2005 $20.99 4 1 2 12.02.2005 $-10.00 5 2 1 01.03.2005 $10.99 6 1 2 01.03.2005 $12.95 7 3 3 01.03.2005 $15.75 Теперь запросы. Начнём с запросам про клиентов: 1. Выдать список клиентов:
2) Выдать количество клиентов
3) Выдать всех зарегистрированных клиентов в январе 2005 года:
4) Найти всех клиентов у которых фамилии начинаются на букву "И"
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||||
|
|||||||||
Vit |
|
||||||||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Теперь более сложные запросы:
1) Показать историю платежей Иванова:
2) Показать деньги заработанные на каждом сервисе:
3. Показать возвраты денег по каждому сервису
4. Показать сервисы которые не дают дохода
5. Показать заработанные деньги в янаваре 2005 года
6. Показать суммарные затраты денег каждым клиентом в январе
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||||||||
|
|||||||||||||
achepkunov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.12.2006 Репутация: нет Всего: 1 |
Нормально, только в самой первой таблице first - Иванов, Петров, а last - Иван. Поправить бы.
|
|||
|
||||
Cooper |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 8.1.2007 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Спасибо, Vit!!! |
|||
|
||||
It_tomahawk_vh |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
Vit, не плохое начало у меня получается
![]() Спасибо... |
|||
|
||||
pretender |
|
||||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Простите за не понимание, а как мне сделать выборку за период не по всем клиентам, а только по определенному? Это сообщение отредактировал(а) pretender - 24.12.2007, 08:36 |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Добавь еще одно условие в where. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
pretender |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Спасибки. Вчера добавлял - не работало, сегодня добавил - работает... Что за ерунда ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Это не ерунда, это просто выходной день, никто не работает ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Xonxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: нет Всего: 1 |
А можно такой вопрос... Как where правильно написать, если у меня есть таблица, а которой, скажем, в столбце Name есть набор фамилий.. К примеру такая:
И я хочу выбрать из этой таблицы все фамилии, которые заканчиваются на 'енко'. Не могу же я проссто написать where name = 'енко'... |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Надо использовать like
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Xonxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: нет Всего: 1 |
Спасибо!
А если мне нужно, чтобы вывело все фамилии, содержащие "енк", то надо писать
|
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
да
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
ИМХО неплохо бы добавить скрипты для создания и заполнения этих таблиц БД. Меня например особо интересуют Foreign Keys - как создавать constrats, что бы при удалении записи из одной таблицы, что-то происходило с данными в таблицах, которые на нее ссылаются (Ну там дефолтные значения ставились, или удалялись соответсвующие записи). Когда пользовался EMS, таких вопросов не возникало, ибо там это пара кликов мышью. А вот как только появилась необходимость создать несколько взаимосвязанных таблиц вручную - начались проблемы... Кроме того, волнуют Primary Keys. Как сделать что бы он автоматически увеличивался? Я думаю это будет интересно не только мне. Тем более, что в вашей учебной БД явно в Payments должны быть два foreign key.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |