2009-12-09 4 views
0

J'ai une base de données où je vérifie la taille, parce que les clients ne peuvent utiliser qu'une certaine quantité d'espace, aussi bien qu'ils peuvent avoir un certain nombre de 'pages', que je mets dans la base de données.SQL Taille comparaison

J'ai la requête SQL suivante:

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 ; 

Ceci retourne une table avec les informations dont j'ai besoin. Cependant, je voudrais ajouter 3 colonnes qui montrent aussi combien chaque utilisateur utilise. D'abord j'ai essayé comme ceci:

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'; 

Cela devrait prendre deux des colonnes dont j'ai besoin. Si j'omets tout de l'union et vers le bas cela fonctionne bien et ajoute des informations sur la taille maximum de webhotel à la table, mais quand j'essaye d'ajouter une autre colonne je reçois une erreur disant "Les instructions SELECT utilisées ont un nombre différent de colonnes". J'ai essayé d'autres moyens, mais je n'arrive pas à trouver un bon moyen d'obtenir les bons résultats. Je suis assez nouveau à SQL, désolé si c'est une question stupide.

Répondre

1

Dans une requête d'union, le nombre de colonnes doit être égal. Donc, si vous avez 3 colonnes dans la première section de votre requête union, vous devriez aussi avoir 3 colonnes dans la seconde.

Dans votre exemple, vous n'avez qu'une colonne dans la deuxième section. Veuillez spécifier ce dont vous avez besoin dans les 2 colonnes supplémentaires, et nous serons en mesure de vous aider avec la requête.

+0

Eh bien, je ne sais pas comment l'exprimer. Mais voilà: J'ai plusieurs bases de données MySQL. Chaque db avec de nombreuses tables, l'une de ces tables a le nom "properties" dans lequel la taille autorisée est écrite, le nombre maximum de pages et le nombre maximum de mails. La requête doit vérifier la taille sur toutes les tables d'une base de données et redonner la taille utilisée. Je pense que cette partie fonctionne. Pour cette nouvelle table, j'ai besoin d'ajouter ou d'ajouter ces 3 valeurs max à la nouvelle table qui contient le nom du serveur, la taille utilisée et l'espace libre. – Lasse