さまざまな環境にデプロイしたパッケージに関する情報を保持するサーバーテーブルを含むデータベースがあります。次に、このデータベースを調べて、インストールされているソフトウェアの最新バージョンの全体像を Web ページの表に表示します。
私がやろうとしていて苦労しているのは、各環境にインストールされている各パッケージの最新バージョンを入手することです。この投稿の情報を使用し始めました。
これは、ソフトウェアの別の側面で大いに役立ちましたが、私が落ち込んでいるのは、選択する基準が複数あるためです。データベースの関連部分は次のとおりです。
パッケージ バージョン テーブル
package_versions
id
server_name_id
package_name_id
version
パッケージ名テーブル
package_names
id
name
サーバー名テーブル
server_names
id
name
environment_name_id
最後に環境名テーブル
environment_names
id
name
この構造により、さまざまな環境にデプロイされたパッケージとバージョンの履歴を保持できます。
次に、各環境にデプロイされているすべてのパッケージの最新バージョンを取得する必要があります。私が言ったように、私は 1 つのテーブルと 2 つの基準だけで遊んでいたとき、上記の投稿のソリューションで成功しましたが、ここでは 4 つのテーブルと 2 つの基準です。
私の試行では、環境にインストールされているすべてのバージョンが返されます。
SELECT environment_names.name as environment,
package_names.display as package,
package_names.name as pkg_name,
package_versions.version as package_version
FROM package_versions INNER JOIN package_names ON package_names.id = package_versions.package_name_id
INNER JOIN server_names ON server_names.id = package_versions.server_name_id
INNER JOIN environment_names ON environment_names.id = server_names.environment_name_id
LEFT JOIN package_versions pv ON (package_versions.package_name_id = pv.package_name_id
AND package_versions.id < pv.id)
AND pv.id IS NULL
ORDER BY environment_names.name, package_names.name
バージョン番号は Maven によって生成されるため、バージョン番号に Max を使用することはできません。そのため、xxx の形式であり、SNAPSHOT を含めることができます。
他の試みでは、最新バージョンがどこにでもインストールされているだけです。
LEFT 結合部分に何かを追加する必要があると思いますが、何を解決するのに本当に苦労しています。どんな助けでも感謝して受け取ります。
どうもありがとう、
ラッセル