Requette SQL DISTINT, COUNt GROUP

Résolu
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 - 25 juin 2023 à 10:23
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 - 26 juin 2023 à 20:26

Bonjour

Je dois récupérer des infos d'une table stock

$sql = $pdo->query("SELECT
distinct id,CODE,ART,FRS,RAY,COULE,SAISIE,OBS,DAT,MAJ,''
as qt, count(*)
as qt2, count(*)
FROM article_mouvement where ART='$id' and SAISIE >= '$lg' GROUP by CODE,ART,FRS,RAY,COULE,OBS,SAISIE
 Order by SAISIE,FRS,RAY,COULE ASC");

Pour que la requette fonctionne j'ai du mettre après MAJ virgule et une double apostrophe

et mettre AS counter et conter2 pour que je puisse récupérer qt2

Malgré le résultat juste je m’interroge sur la propreté du code

une requette qui fonctionne dans PHPAdmin mais pas dans mon PHP

$sql = $pdo->query("SELECT
distinct id,CODE,ART,FRS,RAY,COULE,SAISIE,OBS,DAT,MAJ,qt(*)
FROM article_mouvement where ART='$id' and SAISIE >= '$lg' GROUP by CODE,ART,FRS,RAY,COULE,OBS,SAISIE
 Order by SAISIE,FRS,RAY,COULE ASC");

Mais echo $row->qt(*) ca plante

Alert('Beau temps belle mer');

Jorgio


2 réponses

jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
Modifié le 25 juin 2023 à 12:13

Bonjour,

Je ne maitrise pas la syntaxe php. Mais concernant le sql et select, on utilise soit DISTINCT, soit GROUP BY, mais ce dernier est indispensable si on a des fonctions d'agrégat comme count(*). Après la création d'un alias s'effectue à la suite du champ que l'on veut renommer : count(*) as nbr.

Je ne sais pas exactement ce que tu veux faire, mais voilà une syntaxe à étudier, en distinguant une somme,  d'un total d’occurrences.

SELECT ID,CODE,ART,FRS,RAY,COULE,SAISIE,OBS,DAT,MAJ,
sum(qt) AS sqt, count(*) AS nbr
FROM article_mouvement
WHERE ART='$id' and SAISIE >= '$lg'
GROUP BY ID,CODE,ART,FRS,RAY,COULE,SAISIE,OBS,DAT,MAJ
ORDER BY SAISIE,FRS,RAY,COULE ASC

0
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023
26 juin 2023 à 20:26

Bonjour Jee

Je me suis penché sur ta solution surtout la ligne 2

Il est vrais que répondre a une question avec si peux d'élément c'est compliqué

dans ce cas il y a le code article présent dans le stock 27 pieces

Mais je dois affiche QT, SAISIE (longueur de la piece), FRS (fournisseurde la piece), RAYON (ou est stocké les pieces), COULE le numéro de fonderie de la piece)

Mon résultat doit être sur 5 lignes pour regouper les 27 pieces en stock

Ca permet au commercial de vendre des pièces identiques

et a l'atelier de savoir ou est stocké la pièces

j'ai donc codé :

$sql = $pdo->query("SELECT
distinct id,CODE,ART,FRS,RAY,COULE,SAISIE,OBS,DAT,MAJ,
COUNT(id) AS nbr
FROM article_mouvement where ART='$id' and SAISIE >= '$lg' GROUP by CODE,ART,FRS,RAY,COULE,OBS,SAISIE
 Order by SAISIE,FRS,RAY,COULE ASC");

et j'ai bien mon résultat que j'ai besoin

Un grand merci à toi, a la lecture de mon code c'est plus clair

Alert('Beau temps belle mer');


0