Voici ta requête remise en forme :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| SELECT a.`Sequence` AS `Sequence` ,
a.`Charge` AS `Charge`,
a.`Modification` AS `Modification`,
SUM(Aire) AS 'Intensite A',
SUM(Aire) AS 'Intensite B'
FROM Peptide a
INNER JOIN Peptide b
ON a.SeqPeptide = b.SeqPeptide
AND a.`Charge` = b.`Charge`
AND a.`Modification` = b.`Modification`
AND a.NumReplicat = b.NumReplicat
AND b.NomAnalyse = '$NomAnalyse_A'
WHERE a.NomAnalyse = '$NomAnalyse_B'
ORDER BY NumReplicat |
1) Les 3 premiers alias 'Sequence', 'Charge' et 'Modification' sont inutiles puisque tu renommes ces colonnes avec le même nom !
2) Tu fais deux fois la même somme avec deux alias différents.
D'ailleurs, je ne sais pas comment le SGBD choisit entre les deux colonnes des deux instances de la table puisque tu n'as pas mis l'alias de la table en préfixe à la colonne aire dans ces sommes.
Au fait, cette colonne "aire" ne figurait pas dans ton premier message. Est-ce en fait la colonne que tu nommais "Intensite" ?
3) Tu as un mélange de colonnes et d'opérations de groupage (SUM) dans le SELECT et pas de GROUP BY. Ça ne peut pas fonctionner.
4) Tes colonnes étant correctement nommées, supprime ces saloperies d'apostrophes inversées inutiles !
5)
L'option boule de cristal étant désactivée sur DVP, merci d'expliquer ce qui "ne marche pas". Quels symptômes ?
6) Je pense que tu n'as pas besoin d'auto-jointure en utilisant CASE dans la somme.
Essaie comme ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| SELECT Sequence,
Charge,
Modification,
NumReplicat,
SUM(
CASE
WHEN NomAnalyse = 'A' THEN Aire
ELSE 0
END
) AS Intensite_A,
SUM(
CASE
WHEN NomAnalyse = 'B' THEN Aire
ELSE 0
END
) AS Intensite_B
FROM Peptide
GROUP BY Sequence, Charge, Modification, NumReplicat |
Partager