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

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

  Все выпуски  

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


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

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

Выпуск № 218
от 10.02.2007, 18:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 403, Экспертов: 64
В номере:Вопросов: 1, Ответов: 2


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

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

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

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

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

Приложение:

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

Отвечает: 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
Оценка за ответ: 5

Отвечает: Vvvv
Здравствуйте, Чинга!
Ну для начала, вам бы необходимо что нибудь почитать про нормализацию данных, это как бы общие принципы построения баз данных, ну а так в кратце:
Для вашего примера структура будет например такая:
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 (статус: 1-ый класс)
Ответ отправлен: 06.02.2007, 11:47
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное