0

私は次の状況に苦しんでいます:

プラグインの作成者を含むusersテーブルがあります。プラグイン(名前とID)を含むプラグインテーブルがあります。バージョンテーブルもあります。このバージョンテーブルには、リリースされたプラグインのすべてのバージョン(1.0、1.1など)が含まれます。バージョンレコードには、プラグインの対象となるエンジンのバージョンであるmcversionsも含まれます。

これが私が行ったクエリです:

SELECT
`plugins`.`name`,
users.username,
versions.version,
mcversions.version
FROM
users
INNER JOIN `plugins` ON `plugins`.author = users.id
INNER JOIN versions ON versions.id = `plugins`.id AND versions.time
INNER JOIN mcversions ON versions.mcversion = mcversions.id

ここで1つの問題があります。versions.timeが最も高いバージョン(タイムスタンプ)に属するバージョンとmcversionのみを取得したいのです。そのため、名前、作成者、最新バージョン、および最新バージョンが作成されたmcversionを含むプラグインのリストが必要です。

私は誰でも私を助けることができました、私はとても幸せです!

〜Bas

4

1 に答える 1

1
SELECT
`plugins`.`name`,
users.username,
maxvers.version,
mcversions.version
FROM
users
INNER JOIN `plugins` ON `plugins`.author = users.id

INNER JOIN (SELECT version, MAX(time), id FROM versions) AS maxvers  ON maxvers.id = `plugins`.id 

INNER JOIN mcversions ON versions.mcversion = mcversions.id

私はこれをテストしていませんが、そのサブクエリを使用して最大行を見つける場合 (通常どおり)、バージョン テーブル全体ではなく、そのサブクエリからのみ描画して、必要なことを行います。

于 2012-07-13T13:49:30.873 に答える