Вы хотите изменить данные. Одним из методов является условная агрегация. Для этой цели я бы порекомендовал:
select name,
group_concat(case when comm_rid = 5 then comm_value end) as what_5_means,
group_concat(case when comm_rid = 6 then comm_value end) as radio,
group_concat(case when comm_rid = 7 then comm_value end) as whateve_7_means
from . . .
group by name;
Я не знаю, из какого вопроса использовать пункт from
.
При этом используется group_concat()
, а не max()
на тот случай, если у кого-то есть несколько средств связи одного типа.
Радио Разработки программного обеспечения имеет эпизод по точно этой теме: http://se-radio.net/podcast/2008-02/episode-87-software-components
Общее представление состоит в том, что компонент программного обеспечения может описать, каковы его собственные зависимости и сервисы, в форме метаданных. Я не знаю, почему Вы, возможно, услышали, что Java не имеет компонентов, так как можно, конечно, вообразить архитектуру в Java, где компоненты действительно описывают себя через метаданные. Я предполагаю, что это просто, что определение платформы Java отдельно действительно не имеет компонентной архитектуры.
Обновление: Действительно, один не должен воображать такую архитектуру, потому что, поскольку другие указали, Бобы Java или Сервлеты можно было, конечно, считать компонентно-ориентированной архитектурой.
Термин компонент является одним из самых неоднозначных и злоупотребивших в OO.
Большинство людей согласилось бы, что компонент составлен из группы классов, которые сотрудничают вместе для реализации одного или нескольких интерфейсов. Один из классов берет на себя роль 'фронтенда', т.е. это реализует интерфейс, но делегирует работу к другим классам в группе. Поскольку Вы говорите, что компоненты должны быть заменимыми без остальной части системного знания.
Яркий пример компонентно-ориентированной архитектуры был COM. Это - яркий пример, потому что это так в большой степени использовалось и твердо указывалось. Но обратите внимание, что потребность в этой архитектуре была основана на негибкости компиляции C++ и модели развертывания.
в Java можно сделать очень много к классу, не повреждая двоичную совместимость с остальной частью системы. Таким образом, нет такого же количества потребности создать твердую, компонентно-ориентированную архитектуру. Но все это зависит от того, как Вы определяете термин, например, любой проект, разработанный с помощью внедрения зависимости, мог рассчитать как 'компонентно-ориентированный'.
Это зависит от того, что Вы подразумеваете под "компонентом". Термин может означать много разных вещей в большом количестве различных контекстов, таким образом, это может легко стать сбивающим с толку. После этих слов вот мое понимание предмета:
Компонент отличается от объекта (хотя объекты часто используются, чтобы представить и создать компоненты). Причем различием являются несколько вещей:
Существует много хороших примеров ориентированного на компонент дизайна, но моим предпочтительным вариантом был бы UNIX. Основная идея позади UNIX состоит в том, что это - больше ряда небольших программ, разработанных для сотрудничества вместо того, чтобы быть составленным из еще нескольких монолитных программ.
Программное обеспечение появляется в несколько группировок. Вот блоки Java.
"Компонент", "Слой", "Уровень" и другие философские группировки - обычно - условные. Среда VB COM имела формализм для компонентов. Все остальные рассматривают их как просто идеи.
Бобы являются классами. Может быть единый класс быть компонентом? Возможно. Компонент обычно является набором классов. Иногда только два - формальный интерфейс и реализация.
Компоненты помогают Вам сфокусироваться на логической группировке классов, пакетов, группировок, и т.д.
Так как компонент является условным, каждый язык более или менее имеет их. Существует небольшое количество формализма языка для компонентов. Они не действительно необходимы. Это - идея или принцип, который Вы используете для структурирования взглядов.
С некоторой осторожностью, можно определить подход к "компонентам" с интерфейсом и метаданными и многочисленными другими функциями.
Я не знаю компоненты.NET особенно, но от Java POV, я сказал бы, что компонент является некоторым функциональным блоком, который должен иметь определенный принцип интерфейса/использования. В то время как Java не имеет компонентов как понятия языка, в Java существуют, по моему скромному мнению, компоненты. Технические компоненты были бы, например:
Функциональные компоненты были бы, например:
Архитектурные компоненты могли быть файлами JAR или пакетами OSGi.
Конечно, всегда существует комната для интерпретации ;)