Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] Pour les Kador en SQL

3 réponses
Avatar
Stéphane Miqueu
Bonjour et désolé pour le HS.

Voilà mon soucis, soit une table LignesCommandes (IdLine, FK_IdCmd,
Etat).

Comment sélectionner les FK_IdCmd dont TOUTES les lignes ont l'état
'Soldée' ?

Exemple :
1 354 En cours
2 354 Soldée
3 355 Soldée
4 356 Soldée
5 356 En cours

Je voudrais ne récupérer que 355 puisque les autres n° de cmd ont
encore des lignes 'En cours'.

Merci de votre aide.

--
Ami Calmant
Stéphane

3 réponses

Avatar
Firetox
Bonjour,

SELECT LG.* FROM lignesCommande AS LG
JOIN
( SELECT IDLine AS IDLine ,sum( CASE etat WHEN etat = "soldée" THEN 0 ELSE 1
end) AS Solde
FROM ligneCommande
GROUP BY IDLine ) AS tmpCde ON tmpCde.IDLine = LG.IDLine AND tmpCde.solde=0


la somme = 0 si toutes les lignes sont soldée sinon > 0
et la jointure sur la table te donnera juste les commandes ui respectent
cela


Bon dev
@+



"Stéphane Miqueu" a écrit dans le message de news:

Bonjour et désolé pour le HS.

Voilà mon soucis, soit une table LignesCommandes (IdLine, FK_IdCmd, Etat).

Comment sélectionner les FK_IdCmd dont TOUTES les lignes ont l'état
'Soldée' ?

Exemple :
1 354 En cours
2 354 Soldée
3 355 Soldée
4 356 Soldée
5 356 En cours

Je voudrais ne récupérer que 355 puisque les autres n° de cmd ont encore
des lignes 'En cours'.

Merci de votre aide.

--
Ami Calmant
Stéphane




Avatar
Stéphane Miqueu
Firetox a émis l'idée suivante :
Bonjour,

SELECT LG.* FROM lignesCommande AS LG
JOIN
( SELECT IDLine AS IDLine ,sum( CASE etat WHEN etat = "soldée" THEN 0 ELSE 1
end) AS Solde
FROM ligneCommande
GROUP BY IDLine ) AS tmpCde ON tmpCde.IDLine = LG.IDLine AND tmpCde.solde=0


la somme = 0 si toutes les lignes sont soldée sinon > 0
et la jointure sur la table te donnera juste les commandes ui respectent cela


Bon dev
@+



GGggrrRRR ! C'est énervant, ça fait 2 heures que je cherche un truc
dans ce style sans arriver à le formaliser. On dira que c'est lundi.
;-)

Merci beaucoup

--
Ami Calmant
Stéphane
Avatar
B. Neve
Salut,

Si ta colonne 'en cours' ou 'soldée' correspond à un entier du genre 1 ou 2,
il suffit de faire un select avec le min() de cette valeur. Si tu reçois 1,
c'est qu'il y a au moins une ligne en statut 'en cours'

Voili voilou...

B. Neve


"Stéphane Miqueu" a écrit dans le message de
news:
Bonjour et désolé pour le HS.

Voilà mon soucis, soit une table LignesCommandes (IdLine, FK_IdCmd, Etat).

Comment sélectionner les FK_IdCmd dont TOUTES les lignes ont l'état
'Soldée' ?

Exemple :
1 354 En cours
2 354 Soldée
3 355 Soldée
4 356 Soldée
5 356 En cours

Je voudrais ne récupérer que 355 puisque les autres n° de cmd ont encore
des lignes 'En cours'.

Merci de votre aide.

--
Ami Calmant
Stéphane