Общие > Базы данных
MySQL: не поддающийся мне SELECT :)
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?
хранимые процедуры.
Навигация
Перейти к полной версии