Probleme de création de requête SQL un peu compliqué !

Probleme de création de requête SQL un peu compliqué ! - SQL/NoSQL - Programmation

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 ^^  :??:

Reply

Marsh Posté le 17-07-2006 à 11:27:12   

Reply

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 ...

Reply

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

Reply

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...

Reply

Marsh Posté le 17-07-2006 à 11:44:36    

je tourne en rond, je tourne en rond :p
 
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

Reply

Marsh Posté le 17-07-2006 à 11:50:26    

pourtant les deux erreurs sont claires :o
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

Reply

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)

Reply

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 !

Reply

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)


 :jap: 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!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed