13.08.2020, 11:42 [+3 UTC]
в нашей команде: 4 692 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
02.08.2020, 11:21

Последний вопрос:
12.08.2020, 14:13
Всего: 152773

Последний ответ:
11.08.2020, 14:13
Всего: 260352

Последняя рассылка:
13.08.2020, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
31.01.2010, 14:14 »
Мироненко Николай Николаевич
Спасибо большое!!! SmartTouch пока не работает, т.к. там пока не реализована поддержка драйверов Toshiba, но это пока что. А сейчас работаю с BlueTooth Remote Control. Ещё раз спасибо :)) [вопрос № 176391, ответ № 259078]
26.01.2010, 19:39 »
mcv22
Спасибо. Остальное я додумал сам, нужно было эту папку скопировать на флэшку. Спасибо!!! [вопрос № 176321, ответ № 258975]

РАЗДЕЛ • Базы данных

Установка и настройка серверов баз данных, таблицы и запросы.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Старший модератор)]

Лучшие эксперты в этом разделе

SAW
Статус: Студент
Рейтинг: 156
solowey
Статус: Профессионал
Рейтинг: 53
Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 27

Перейти к консультации №:
 

Консультация онлайн # 74262
Раздел: • Базы данных
Автор вопроса: Чинга
Отправлена: 05.02.2007, 18:22
Поступило ответов: 2

Здравствуйте уважаемые эксперты. У меня возник вопрос, возможно глупый, возможно нет. Цель впроса, систематизировать свои знания и узнать методы выборки данных и объженения таблиц, не только в запросах, но и при формировании базы данных.
См. приложение.

вот примерная труктура взятая с потолка. Единственно что соблюдено так это кол-во строк и в таблицах.
надо что бы при запросе к БД выдавались данные из всех таблиц
Например при вводе имени "Вася" выдавалась имя, фамилия, где работал, адрес города, область, период работы, номер предприятия - все данные из таблиц.
Как так сделать? Прошу описать все способы. Мне важна для систематиизирования свои знания и узнать другие способы объеденения, запросов. Синтаксис нужен языка SQl.

PS Это моя первая попытка создать БД с несоклькими таблицами и их связыванием. Раньше требований таких не было.

Заранее спасибо.

Приложение:

Состояние: Консультация закрыта

Ответ # 141460 от Grigory

Здравствуйте, Чинга!
У вас во всех таблицах должно быть общее поле, идентифицирующее определенного пользователя, например user_id. Создав такое поле во всех ваших таблицах, вы сможете создать первичный и вторичные ключи, связывающие ваши таблицы между собой. После того, как будут созданы связи между таблицами, можно будет их объеденить по общему ключевому полю и вытоащить всю, интересующую вас информацию по данному пользователю.

Пример:
tbl1
user_id, -- primary key
nicname,
email
password

tbl2
user_id, -- foreign key
gorod,
strana,
oblast,
adres

tbl3
user_id, -- foreign key
mesto_raboty,
period_rab,
id_pred,
chto_eshe

select t1.*, t2.*, t3.*
from tbl1 t1, tbl2 t2, tbl3 t3
where t1.user_id = 1
AND t1.user_id = t2.user_id
AND t1.user_id = t3.user_id

Удачи!

Григорий


Консультировал: Grigory
Дата отправки: 05.02.2007, 19:55

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, Чинга!
Ну для начала, вам бы необходимо что нибудь почитать про нормализацию данных, это как бы общие принципы построения баз данных, ну а так в кратце:
Для вашего примера структура будет например такая:
Tab Peoples
PeopleID int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(40) NULL,
MiddleName nvarchar(40) NULL,
LastName nvarchar(40) NULL,
и т.д.

Tab Companys
CompanyID int IDENTITY(1,1) NOT NULL,
Name nvarchar(40) NULL,
Adrees nvarchar(40) NULL,
и т.д.

Tab WorkHistory
WorkHistoryID int IDENTITY(1,1) NOT NULL,
PeopleID in NOT NULL,
CompanyID int NOT NULL,
DateWorkBegin datetime NULL,
DateWorkEnd datetime NULL
и т.д.

а далее с этим делаешь что хочешь, например

Select
FirstName , MiddleName , LastName , Name, DateWorkBegin , DateWorkEnd
From Peoples
Left Outer Join WorkHistory ON WorkHistory.PeopleID = Peoples.PeopleID
Left Outer Join Companys ON WorkHistory.CompanyID = Companys.CompanyID
Where Peoples.FirstName like '%Вася%'
ну что то гдето здесь...
Left Outer Join - берет все из левой таблицы Peoples а из провой (WorkHistory) только то что поподает под условие WorkHistory.PeopleID = Peoples.PeopleID


Консультировал: Vvvv
Дата отправки: 06.02.2007, 11:47

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 74262
Чинга

# 1

= общий = | 05.02.2007, 20:15

Благодарю Григорий. А если это касаеться базы MySQL? На сколько я помню ключ foreign key нельзя там выставл\ть.

Вадим Исаев ака sir Henry
Мастер-Эксперт

ID: 425

# 2

= общий = | 10.02.2007, 19:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

То Чинга: В данном случае, foreign key - это обычный, уникальный индекс. При создании связи таблиц в запросах, заметно увеличивает скорость выполнения запроса. Впрочем, если у Вас таблицы небольшие, то присутствие или отсутствие индексов при запросах Вы не заметите.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.17923 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39