Общие > Базы данных

MySQL: не поддающийся мне SELECT :)

(1/2) > >>

Forza:
Допустим, есть таблица «Люди» в самом примитивном виде:

--- Код: ---+-----------+-------------+
| person_id | person_name |
+-----------+-------------+
|    1      | John Smith  |
|  .....    |    .....    |
--- Конец кода ---

Также есть некая таблица «Дополнительные данные», имеющая следующий вид:

--- Код: ---+-----------+-----------+------------+
| person_id | data_type |    data    |
+-----------+-----------+------------+
|    1      |   e-mail  |  ab@сd.ru  |
|    1      |   e-mail  |  [email]ef@gh.ru[/email]  |
|    1      |   phone   |   12-34    |
|    1      |   phone   |   23-24    |
|    1      |   phone   |   14-41    |
|  .....    |   .....   |  .....     |
--- Конец кода ---

То есть в данную таблицу заносятся различные дополнительные параметры о людях, которые у них могут не быть, а могут и быть, при этом в неопределённом количестве. В принципе, это можно записать в одном поле в таблице «Люди» через запятую, но начальник хочет, чтобы под каждый экземпляр параметра было отдельное поле (на самом деле, есть и другие более сложные параметры для более сложных объектов – «Люди» приведены только в качестве примера).

Итак вопрос (спасибо всем, кто до него дочитал): можно ли одним select-ом получить что-нибудь типа

--- Код: ---+-------------+--------------------+---------------------+
| person_name |      e-mail        |         phone       |
+-------------+--------------------+---------------------+
| John Smith  | [email]ab@cd.ru[/email], [email]ef@gh.ru[/email] | 12-34, 23-24, 14-41 |
--- Конец кода ---

или хотя бы:


--- Код: ---+-------------+----------------------------+----------------------------+
| person_name |         ??????             |             ?????          |
+-------------+----------------------------+----------------------------+
| John Smith  | e-mail: [email]ab@cd.ru[/email], [email]ef@gh.ru[/email] | phone: 12-34, 23-24, 14-41 |
--- Конец кода ---

Я пока не представляю, как вписать в одну строку данные одной записи из таблицы X и нескольких записей таблицы Y.

Макс:
нельзя
(не считая варианта с ХП в mysql5)

fidget:
см.  функция GROUP_CONCAT()

правда она только с версии 4.1.

Forza:
fidget, а у меня версия только 4.0.12. Блин!

На http://dev.mysql.com/downloads/ предлагают скачать 4.1.2-alpha, 5.0.0a-alpha. Что из этого лучше? А то слово alpha меня смущает.

Макс, а что такое ХП в mysql5? ;)
Если это поможет, то не проблема установить и скачать 5ый mysql. Или его не стоит скачивать, пока он -alpha?

fidget:
> Что из этого лучше? А то слово alpha меня смущает.

альфа она всегда альфа. Но ветка 4.1  будет развиваться быстрее, чем 5.0.

> ХП в mysql5?

хранимые процедуры.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии