Я почти уверен, что вам нужна только условная агрегация:
SELECT d.name, d.dataid,
MAX(CASE WHEN a1.attrid = 2 THEN a2.stringval END) as LastName,
MAX(CASE WHEN a1.attrid = 3 THEN a2.stringval END) as FirstName
FROM directory d JOIN
attribute2table a2
ON a2.id = d.dataid JOIN
attribute1table a1
ON a1.id = d.dataid
WHERE d.dataid = 1290
GROUP BY d.name, d.dataid
Я лично использую муравья, грабли и maven2. Я использовал муравья больше всего и нахожу это большим по нескольким причинам:
Поскольку это - Java, это работает над большим количеством платформ (не изменяя сценариев)
Файлы типа "build" записаны в XML и довольно легкие записать
Существует много сторонних расширений, доступных для него, и легко записать плагины для
мы делаем экстремальную кросс-разработку, и наш код работает на Linux, окна ce, окна 2K, ядро и uCOS-II., так как каждая среда использует отличающийся, 'делают' методологию (клиент ядра, например, требует, чтобы мы скомпилировали через воина кода GUI).
я использовал МУРАВЬЯ, объединенного с жемчугом в течение приблизительно 2 лет, но этим выводом сценарий сборки к общей непригодности для обслуживания.
теперь мы переместились для использования Python, которые увеличивают пригодность для обслуживания сценариев.
нижняя строка, я не нашел готовый инструмент и должен был создать мое собственное. возможно, когда у меня есть некоторое время (2017?) я упакую свои сценарии и распределю их....
Если Вы находитесь в мире Java, существует довольно много инструментов, которые являются межплатформенными. Муравей Apache и Знаток являются оба инструментами сборки, которые будут работать на любой платформе, которая имеет Java в наличии для него.
Круиз-контроль (непрерывный инструмент интеграции) также работает над Windows и Linux (он записан в Java также).
У меня не было реальных проблем с базовыми инструментами, единственные проблемы, которые я иногда имел, возникли из вещей, внешних к процессу сборки, т.е. артефактам публикации - это будет варьироваться между системами, таким образом, я нашел, что нет никакого единственного способа настроить его.
Для разработки C/C++ я нашел это работами bakefile хорошо. Довольно большой wxWidgets проект, межплатформенная межплатформенная утилита и библиотека UI, использует его для их поколения файла типа "build".
Bakefile является межплатформенным, собственный генератор make-файлов кросс-компилятора. Это берет независимое от компилятора описание задач сборки, как введено и генерирует собственный make-файл (Makefile.in autoconf, проект Visual C++, make-файл скрытой копии и т.д.).
Задача Bakefile состоит в том, чтобы генерировать собственные make-файлы, так, чтобы люди могли продолжать использовать свои любимые инструменты. Существуют другие межплатформенные, делают решения, но они любой не является собственным и требует, чтобы пользователь использовал незнакомые инструменты (Повышение. Сборка) или они слишком ограничены (qmake).
Вы можете использовать gmake в Windows, а также с cygwin / minGW или собрать свой Windows-материал в Linux. http://cdtdoug.blogspot.com/2009/05/mingw-cross-for-linux.html
Мы использовали среду Java для Linux, Windows и Mac в течение последних 18 месяцев.
Мы действительно использовали GWT какое-то время, и это действительно причиняло нам много боли. Будьте осторожны, если вы так раскачиваетесь.
Существуют такие инструменты, как Opus Make или MKS Toolkit, которые предлагают мультиплатформенность и поддержку. Если у вас есть кодовая база скрипта make, может быть проще перейти на один из них. Я подозреваю, что вы можете охотиться за подобными инструментами в рекламе журнала DDJ.