Ressortir les lignes NULL d'une requete
Résolu
Lap-top
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
Lap-top Messages postés 56 Date d'inscription Statut Membre Dernière intervention -
Lap-top Messages postés 56 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous. Je dispose de trois tables : produit(id_produit, nom_produit, prix), employe(id_employe, nom_employe) et vente( id_vente, id_produit, id_employe ).
J'aimerais poser une requete dans laquelle ressortir deux catégories de choses :
le total de vente par produit(sur chaque tuple) effectuées par l'employe "Nick" (sur chaque ligne je sors : id_produit, nom_produit, nom_employe, totalDesPrix)
les lignes de produits non vendus avec dedans la valeur NULL comme d'habitude, genre le id_produit, nom_produit et nom_employe sortent mais le total de prix reste à NULL.
J'ai essayé cette requête : "
Je voudrais utiliser cette requête pour poser par la suite un "if(chamm == NULL)" et mettre les cases Nulles a zéro. Alors merci d'avance pour vos réponses.
J'aimerais poser une requete dans laquelle ressortir deux catégories de choses :
le total de vente par produit(sur chaque tuple) effectuées par l'employe "Nick" (sur chaque ligne je sors : id_produit, nom_produit, nom_employe, totalDesPrix)
les lignes de produits non vendus avec dedans la valeur NULL comme d'habitude, genre le id_produit, nom_produit et nom_employe sortent mais le total de prix reste à NULL.
J'ai essayé cette requête : "
select produit.id_produit, nom_produit, nom_employe, sum(prix) from produit left join vente on produit.id_produit = vente.id_produit where vente.id_employe = employe.id_employe and nom_employe like "Nick" GROUP BY produit.id_produit order by produit.id_produit Mais ça me renvoie que les les lignes des produits vendus et non celles des non vendus.
Je voudrais utiliser cette requête pour poser par la suite un "if(chamm == NULL)" et mettre les cases Nulles a zéro. Alors merci d'avance pour vos réponses.
A voir également:
- Ressortir les lignes NULL d'une requete
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Filtre excel ne fonctionne pas sur toutes les lignes ✓ - Forum Excel
- Requête sql pix - Forum Python
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Word
3 réponses
Bonjour
Pour les produits non vendus, tous les champs de ta clause WHERE valent NULL. Ta clause WHERE est donc évaluée à FALSE, et la ligne correspondante n'est pas incluse dans les résultats.
Pourquoi n'écris-tu pas simplement
La clause ON d'une jointure n'est pas limitée à l'égalité de deux champs, tu peux très bien mettre une condition "complexe".
Je n'ai pas essayé, mais ça devrait marcher pour récupérer aussi les lignes des produits non vendus.
Pour les produits non vendus, tous les champs de ta clause WHERE valent NULL. Ta clause WHERE est donc évaluée à FALSE, et la ligne correspondante n'est pas incluse dans les résultats.
Pourquoi n'écris-tu pas simplement
... on produit.id_produit = vente.id_produit AND vente.id_employe = employe.id_employe and nom_employe like "Nick" ...? Il n'y a plus de WHERE pour supprimer les lignes que le LEFT JOIN avait, lui, conservées.
La clause ON d'une jointure n'est pas limitée à l'égalité de deux champs, tu peux très bien mettre une condition "complexe".
Je n'ai pas essayé, mais ça devrait marcher pour récupérer aussi les lignes des produits non vendus.
Salut,
Dans la requête que tu indiques, il n'y a aucune référence à la table "employe". Mais je suppose qu'il s'agit d'un oubli à l'écriture dans ton post, sinon tu aurais tout simplement une erreur mysql.
Pour ce qui est de ton problème, la solution proposée par le père devrait fonctionner. Sinon, tu peux aussi remplacer
Dans la requête que tu indiques, il n'y a aucune référence à la table "employe". Mais je suppose qu'il s'agit d'un oubli à l'écriture dans ton post, sinon tu aurais tout simplement une erreur mysql.
Pour ce qui est de ton problème, la solution proposée par le père devrait fonctionner. Sinon, tu peux aussi remplacer
and nom_employe like "Nick"par
and (nom_employe like "Nick" or nom_employe is null).
Okkk!! merci le père passe mais il a fallu que je pose un Where la où tu as mis AND. Apparemment, SQL refuse la présence d'un AND avant la clause WHER. Je sais pas trop.
J'ai donc fait après la clause on
Ça passe, merci.
Sinon, tu as raison flokocha, j'ai oublié de référencer la table employe.
Avant de revenir lire les réponses que vous avez postées, j'ai tenté et tenté et trouvé une méthode. Mais c'est plus complexe alors c'est plus la peine de la poster donc je vais utiliser la vôtre.
J'ai donc fait après la clause on
...WHERE employe.id_employe = vente.id_employe and nom_employe like "Nick".
Ça passe, merci.
Sinon, tu as raison flokocha, j'ai oublié de référencer la table employe.
Avant de revenir lire les réponses que vous avez postées, j'ai tenté et tenté et trouvé une méthode. Mais c'est plus complexe alors c'est plus la peine de la poster donc je vais utiliser la vôtre.