OVH Cloud OVH Cloud

requete tordue...

6 réponses
Avatar
Valérie S
Bonjour à tous,
J'ai 2 tables du style client et commande.

Je voudrais resortir dans une seule requete les infos clients et les infos
de la derniere commande.

Je suis partie sur ça :
SELECT client.id_client , client.nom, commande.id_commande FROM client LEFT
JOIN commande ON client.id_client = commande.id_client ;

Mais j'obtient toutes les commandes. Je sais pas trop où mettre le
Max(numéro commande) sachant qu'un client peut ne pas avoir de commande du
tout.

Pouvez-vous m'aider...

Merci

6 réponses

Avatar
Laurent Moreau
SELECT client.id_client , client.nom, max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom

Laurent.



"Valérie S" wrote in message
news:
Bonjour à tous,
J'ai 2 tables du style client et commande.

Je voudrais resortir dans une seule requete les infos clients et les infos
de la derniere commande.

Je suis partie sur ça :
SELECT client.id_client , client.nom, commande.id_commande FROM client


LEFT
JOIN commande ON client.id_client = commande.id_client ;

Mais j'obtient toutes les commandes. Je sais pas trop où mettre le
Max(numéro commande) sachant qu'un client peut ne pas avoir de commande du
tout.

Pouvez-vous m'aider...

Merci




Avatar
Valérie S
> SELECT client.id_client , client.nom, max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom


Cette solution a déjà été testée mais le soucis c'est que j'ai pleins de
champs par exemple commentaire :

SELECT client.id_client , client.nom, commande.commentaire,
max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom, commande.commentaire


Et là comme le commentaire de la commande 1 et <> de la 2 alors j'ai de
nouveaux toutes les commandes et pas la derniere
Avatar
Laurent Moreau
SELECT tmp.*, commande.* FROM
(
SELECT client.id_client , client.nom, max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom
) tmp
INNER JOIN commande ON tmp.id_commande=commande.id_commande


Laurent.



"Valérie S" wrote in message
news:%

> SELECT client.id_client , client.nom, max(commande.id_commande)
> FROM client
> LEFT JOIN commande ON client.id_client = commande.id_client
> GROUP BY client.id_client , client.nom
Cette solution a déjà été testée mais le soucis c'est que j'ai pleins de
champs par exemple commentaire :

SELECT client.id_client , client.nom, commande.commentaire,
max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom, commande.commentaire


Et là comme le commentaire de la commande 1 et <> de la 2 alors j'ai de
nouveaux toutes les commandes et pas la derniere




Avatar
Laurent Moreau
J'ai oublié AS id_commande ici:

SELECT client.id_client , client.nom, max(commande.id_commande) AS
id_commande


Laurent.



"Valérie S" wrote in message
news:%

> SELECT client.id_client , client.nom, max(commande.id_commande)
> FROM client
> LEFT JOIN commande ON client.id_client = commande.id_client
> GROUP BY client.id_client , client.nom
Cette solution a déjà été testée mais le soucis c'est que j'ai pleins de
champs par exemple commentaire :

SELECT client.id_client , client.nom, commande.commentaire,
max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom, commande.commentaire


Et là comme le commentaire de la commande 1 et <> de la 2 alors j'ai de
nouveaux toutes les commandes et pas la derniere




Avatar
Laurent Moreau
Et puis c'est un LET JOIN, pas un INNER....

:-)

Laurent.





"Valérie S" wrote in message
news:%

> SELECT client.id_client , client.nom, max(commande.id_commande)
> FROM client
> LEFT JOIN commande ON client.id_client = commande.id_client
> GROUP BY client.id_client , client.nom
Cette solution a déjà été testée mais le soucis c'est que j'ai pleins de
champs par exemple commentaire :

SELECT client.id_client , client.nom, commande.commentaire,
max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom, commande.commentaire


Et là comme le commentaire de la commande 1 et <> de la 2 alors j'ai de
nouveaux toutes les commandes et pas la derniere




Avatar
Valérie S
ca l'air génial ta requete. J'essai de suite.

Merci beaucoup
"Laurent Moreau" a écrit dans le message
de news:brsk61$6ge$


SELECT tmp.*, commande.* FROM
(
SELECT client.id_client , client.nom, max(commande.id_commande)
FROM client
LEFT JOIN commande ON client.id_client = commande.id_client
GROUP BY client.id_client , client.nom
) tmp
INNER JOIN commande ON tmp.id_commande=commande.id_commande


Laurent.



"Valérie S" wrote in message
news:%
>
> > SELECT client.id_client , client.nom, max(commande.id_commande)
> > FROM client
> > LEFT JOIN commande ON client.id_client = commande.id_client
> > GROUP BY client.id_client , client.nom
> Cette solution a déjà été testée mais le soucis c'est que j'ai pleins de
> champs par exemple commentaire :
>
> SELECT client.id_client , client.nom, commande.commentaire,
> max(commande.id_commande)
> FROM client
> LEFT JOIN commande ON client.id_client = commande.id_client
> GROUP BY client.id_client , client.nom, commande.commentaire
>
>
> Et là comme le commentaire de la commande 1 et <> de la 2 alors j'ai de
> nouveaux toutes les commandes et pas la derniere
>
>