Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Подскажите, пожалуйста, как сделать выборку. (Александр Матвеев) 03/10/2007 - 00:40:33



From: Александр Матвеев - 03/10/2007 - 00:40:33
Subject:Подскажите, пожалуйста, как сделать выборку.
-----------------
Всем привет. Вопрос к опытным людям. Нужно организовать таблицы наилучшим образом. Все примеры данных и заголовки полей данных выдуманы, любые совпадения с

реальными фактами - случайны! =)
Есть списки пользователей, ID и Имя. Требуется хранить некоторые данные пользователей. Например, E-Mail-адреса, Web-ссылки, Телефоны, а также ID

пользователей, с которыми пользователь как-то связан. Эти данные могут быть СПИСКАМИ, причем поля будут добавляться. Поэтому отпадает забивка всего этого в

одну таблицу. Вот пример выборки:

SELECT
-------------------------------------------------------------------------------------------
|id|Пользователь|E-Mail |Web |Phone |Связан (дата) |
-------------------------------------------------------------------------------------------
|0 |Петя |petya666@gmail.com |petya.ru |123-45-67 |Вася (15.01.2007)|
| | |petya-petya@abc.de | | | |
-------------------------------------------------------------------------------------------
|1 |Вася |vasya@gmail.com | |123-45-78 | |
| | | | |233-85-64 | |
-------------------------------------------------------------------------------------------
|2 |Коля | | | |Петя (16.01.2007)|
| | | | | |Саша (13.12.2006)|
-------------------------------------------------------------------------------------------
|3 |Саша |sashe4ka@dd.af |sasasasa.ru |123-67-89 | |
| | | |shurik.ru | | |
-------------------------------------------------------------------------------------------

Единственное решение, которое я придумал - это разбить на таблицы так:

TABLE users
---------
|id|name|
---------
|0 |Петя|
|1 |Вася|
|2 |Коля|
|3 |Саша|
---------

TABLE email
-------------------------
|id|mail |
-------------------------
|0 |petya666@gmail.com |
|0 |petya-petya@abc.de |
|1 |vasya@gmail.com |
|3 |sashe4ka@dd.af |
-------------------------

TABLE web
-----------------
|id|web |
-----------------
|0 |petya.ru |
|3 |sasasasa.ru |
|3 |shurik.ru |
-----------------

TABLE phone
-----------------
|id|phone |
-----------------
|0 |123-45-67 |
|1 |123-45-78 |
|1 |233-85-64 |
|3 |123-67-89 |
-----------------

TABLE connected
--------------------
|id|c_id|date |
-------------------|
|0 |1 |15.01.2007|
|2 |0 |16.01.2007|
|2 |3 |13.12.2006|
--------------------

Как видно, таблица CONNECTED хранит ID связанных пользователей и еще какие-нибудь данные (например, дату).
Потом делать выборку всех записей из базы USERS, и в КАЖДОЙ ЯЧЕЙКЕ делать новый SELECT из баз EMAIL, WEB, PHONE, CONNECTED. Итого получится очень много

запросов! Как это будет работать? Или как можно организовать выборку? Пробовал использовать JOIN, но не смог получить такой сложный результат.

Буду рад любой помощи, уважаемые коллеги! Нахожу это очень интересным, потому что поимев такой опыт, можно будет создать структурку посложнее =)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
32269



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |