SQL : Somme de résultats de queries

badside Messages postés 81 Statut Membre -  
badside Messages postés 81 Statut Membre -
Bonjour à tous,




J'ai deux queries qui me ramènent un montant :

query 1 : SELECT valeur_1 FROM table_1 WHERE condition_1 AND condition_2
query 2 : SELECT valeur_2 FROM table_2 WHERE condition_3 AND condition_4

J'aimerai obtenir la somme en une query. Je fais donc :

SELECT table_1.valeur_1 + table_2.valeur_2 FROM table_1, table_2 WHERE (table_1.condition_1 AND table_1.condition_2) AND (table_2.condition_3 AND table_2.condition_4)

Pour "table_1.condition_1", "table_1.condition_2", "table_2.condition_3" et "table_2.condition_4", les préfixes "table_1" et "table_2" sont appliqués, bien évidemment, au nom des colonnes des tables correspondantes de la condition.



L'exécution de cette query me ramène l'erreur suivante :
Column 'table_2.valeur_2' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

Je ne comprends pas trop ce qu'il me veut avec son group by. Les deux queries de départ ramenaient bien une seule valeur chacune ... Les conditions sont donc bien correctes.

Quelqu'un a une idée ? Peut-il m'éclairer ?




Merci d'avance,
Badside.
A voir également:

3 réponses

badside Messages postés 81 Statut Membre 4
 
J'ai trouvé !

==> SELECT (query_1) + (query_2)

Tout simplement ;)
++
2
Georges6180
 
Bonjour,

Tu devrais dire dans quoi tu travailles, les syntaxes peuvent être différentes.

Ton problème vient de "SELECT table_1.valeur_1 + table_2.valeur_2 FROM ", le + sert à concatener, tu dois employer la virgule.

Pour ta facilité, je te joins un recap de la commande select dans interbase

Description de la commande SELECT

SELECT retrieves data from tables, views, or stored procedures. Variations of the SELECT statement make it possible to:

Retrieve a single row, or part of a row, from a table. This operation is referred to as a singleton select.
Directly retrieve multiple rows, or parts of rows, from a table.
Retrieve related rows, or parts of rows, from a join of two or more tables.
Retrieve all rows, or parts of rows, from union of two or more tables.

All SELECT statements consist of two required clauses (SELECT, FROM), and possibly others (WHERE, GROUP BY, HAVING, UNION, PLAN, ORDER BY). The SELECT and FROM clauses are required for both singleton and multi-row SELECTs; all other clauses listed below are optional The following table explains the purpose of each clause:

Clause Purpose
SELECT Lists columns to retrieve.
FROM Identifies the tables to search for values.
WHERE Specifies the search conditions used to restrict retrieved rows to a subset of all available rows. A WHERE clause may contain its own SELECT statement, referred to as a subquery.
GROUP BY Groups related rows based on common column values. Used in conjunction with HAVING.
HAVING Restricts rows generated by GROUP BY to a subset of those rows.
UNION Combines the results of two or more SELECT statements to produce a single, dynamic table without duplicate rows.
ORDER BY Specifies the sort order of rows returned by a SELECT, either ascending (ASC), the default, or descending (DESC).
PLAN Specifies the query plan that should be used by the query optimizer instead of one it would normally choose.

Bon courage

Georges
1
badside Messages postés 81 Statut Membre 4
 
Salut,

Je travaille dans le query analyser.
N'existe-il pas une fonction ou commande permettant de sommer en sql ?

Merci,
Badside.
0