0

私はサイズをチェックするデータベースを持っています。なぜなら、クライアントは特定の量のスペースしか使用できないだけでなく、データベースに配置した特定の数の「ページ」しか持っていない可能性があるからです。

私は次のSQLクエリを持っています:

SELECT table_schema "Servers",
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB",
sum( data_free )/ 1024 / 1024 "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema ;

これにより、必要な情報を含むテーブルが返されます。ただし、各ユーザーがどれだけ使用しているかを示す3つの列を追加したいと思います。最初に私はこのように試しました:

SELECT table_schema "Servers",
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB",
sum( data_free )/ 1024 / 1024 "Free Space in MB",
property_value "MaxWebhotelSize"
FROM information_schema.TABLES, properties
WHERE property_key LIKE 'MaxWEbhotelSize'
GROUP BY table_schema
UNION
SELECT property_value "MaxPages"
FROM properties
WHERE property_key LIKE 'MaxPages';

これには、必要な2つの列を追加する必要があります。unionからすべてを除外すると、正常に機能し、Webhotelの最大サイズに関する情報がテーブルに追加されますが、別の列を追加しようとすると、「使用されたSELECTステートメントの列数が異なります」というエラーが表示されます。私はそれを回避するいくつかの他の方法を試しましたが、正しい結果を得る良い方法を理解できないようです。私はSQLにまったく慣れていません。これがばかげた質問である場合は、申し訳ありません。

4

1 に答える 1

1

ユニオン クエリでは、列の数は等しくなければなりません。

したがって、ユニオン クエリの最初のセクションに 3 つの列がある場合は、2 番目のセクションにも 3 つの列が必要です。

あなたの例では、2 番目のセクションに 1 列しかありません。追加の 2 列に必要なものを指定してください。お問い合わせのお手伝いができる場合があります。

于 2009-12-09T11:23:13.227 に答える