2010-04-29 7 views
0

J'ai cette requête MySql:commande une requête MySQL avec des jointures et des groupes

SELECT * 
FROM Customer c 
JOIN eHRDemographic ehD ON ehD.CxID = c.CustomerID 
JOIN CustPrimaryWeight cpW ON cpW.CxID = c.CustomerID 
WHERE c.CustomerID =22703 
GROUP BY c.CustomerID 
ORDER BY cpW.CustPrimaryWeightID DESC 

Cela ne fonctionne pas vraiment correctement que la table CustPrimaryWeight a plusieurs entrées et il est simplement rejoindre la première entrée et non plus récente un comme l'instruction ORDER ne semble rien faire.

Des idées?

Répondre

1

Je ne suis pas sûr de ce que vous essayez de faire. Si vous voulez trier la table CustPrimaryWeight avant la jointure, vous pouvez essayer quelque chose comme ça.

SELECT * 
FROM Customer c 
JOIN eHRDemographic ehD ON ehD.CxID = c.CustomerID 
JOIN (SELECT * FROM CustPrimaryWeight ORDER BY CustPrimaryWeightID DESC) cpW ON cpW.CxID = c.CustomerID 
WHERE c.CustomerID =22703 
GROUP BY c.CustomerID 

Mais puisque vous groupant par CustomerID, je pense que vous essayez de montrer les CustPrimaryWeight maximales données pour chaque client.

SELECT * 
FROM Customer c 
JOIN eHRDemographic ehD ON ehD.CxID = c.CustomerID 
JOIN (SELECT * FROM CustPrimaryWeight 
     WHERE CustPrimaryWeightID = (SELECT MAX(CustPrimaryWeightID) 
            FROM CustPrimaryWeight 
            WHERE CustomerID = c.CustomerID) 
    ) cpW ON cpW.CxID = c.CustomerID 
WHERE c.CustomerID =22703 
GROUP BY c.CustomerID 
Questions connexes