Probleme de création de requête SQL un peu compliqué ! - SQL/NoSQL - Programmation
Marsh Posté le 17-07-2006 à 11:32:56
select sum(champ), ...
from (
select champ, ...
from table1
union all
select champ, ...
from table 2
)
group by ...
Marsh Posté le 17-07-2006 à 11:36:57
Merci pour ta réponse, j'ai essayer :
SELECT ap,SUM(quantite)
FROM (
SELECT ap
FROM maximin
UNION ALL
SELECT ap
FROM choisey
)
GROUP BY ap
et voici l'erreur retourner :
MySQL a répondu:Documentation
#1248 - Every derived table must have its own alias
Merci :s
Marsh Posté le 17-07-2006 à 11:40:07
faudrait peut-être penser à retourner une quantité dans tes sous-requêtes, sinon je vois pas sur quoi elle va faire son sum la requête principale...
Marsh Posté le 17-07-2006 à 11:44:36
je tourne en rond, je tourne en rond
SELECT ap, SUM( maximin.quantite + choisey.quantite )
FROM (
SELECT ap, SUM( quantite )
FROM maximin
GROUP BY ap
UNION ALL SELECT ap, SUM( quantite )
FROM choisey
GROUP BY ap
) AS plop
GROUP BY ap
MySQL a répondu: Documentation
#1109 - Unknown table 'maximin' in field list
Marsh Posté le 17-07-2006 à 11:50:26
pourtant les deux erreurs sont claires
SELECT ap, SUM( qte )
FROM (
SELECT ap, SUM( quantite ) qte
FROM maximin t1
GROUP BY ap
UNION ALL
SELECT ap, SUM( quantite ) qte
FROM choisey t2
GROUP BY ap
) AS plop
GROUP BY ap
Marsh Posté le 17-07-2006 à 11:54:29
anapajari > chuis pas sûr que les SUM() dans les sous-requêtes soit très utile d'autant qu'avec un UNION ALL, le nombre de lignes retournée par les sous-requêtes n'impacte pas les perfs, donc je pense qu'un SUM() unique pour toute la requête est plus approprié (à tester)
Marsh Posté le 17-07-2006 à 11:55:58
Merci a vous, sa marche nikel, je ne connaisser pas ce procédés
Bonne journée !
Marsh Posté le 17-07-2006 à 12:06:33
Arjuna a écrit : anapajari > chuis pas sûr que les SUM() dans les sous-requêtes soit très utile d'autant qu'avec un UNION ALL, le nombre de lignes retournée par les sous-requêtes n'impacte pas les perfs, donc je pense qu'un SUM() unique pour toute la requête est plus approprié (à tester) |
tout a fait d'accord ...
En fait moi j'ai juste repris la dernière requête sans regarde pour ajouter les alias sur les tables ou ça manquait!
Marsh Posté le 17-07-2006 à 11:27:12
Bonjour, alors voila mon soucis,
Je dispose de 2 tables (maximin, choisey) ayant toutes 2 cette MEME structure :
CREATE TABLE `maximin / choisey` (
`date` date NOT NULL default '0000-00-00',
`ap` varchar(6) NOT NULL default '',
`libelle` varchar(40) NOT NULL default '',
`prix` varchar(7) NOT NULL default '',
`famille` int(2) NOT NULL default '0',
`ss_famille` int(3) NOT NULL default '0',
`quantite` decimal(10,0) NOT NULL default '0',
`ca` decimal(10,0) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
J'aimerais pouvoir afficher la somme de la quantité pour chaque ap COMMUNE AUX 2 TABLES !
J'ai essayer plusieurs solution, aucune ne marche ... voici la base de ma requête :
SELECT maximin.ap, choisey.ap, SUM(maximin.quantite+choisey.quantite)
FROM maximin, choisey
GROUP BY maximin.ap, choisey.ap
J'ai alors 2 problème : la somme est totalement fausse et je me retrouve avec 2 colonne ap (maximin et choisey) alors que j'aimerais que la deuxieme s'additionne a la première ...
En espérant avoir été a peu pres clair ... merci par avance ^^