Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
yvon.thoravalNO
P'tit Marcel wrote:
déjà, il vaut mieux décrire explicitement les critères de jointure, ça évite d'en oublier un critère et aboutir à une table de 1000000*100000 lignes :
SELECT i.igd_nom, m.msr_nom, n.nct_quantite FROM tj_necessite_nct as n LEFT JOIN t_mesure_msr as m ON n.msr_id = m.msr_id INNER JOIN t_ingredient_igd as i ON n.igd_id = i.igd_id WHERE n.rct_id = "1"
(au passage, emploie des alias pour les noms de table à rallonge)
ca marche impec ! merci beaucoup, il y a des gars vraiment en forme dès le début d'année...
[...]
> ca correspond à deux cas de figure : > carotte 2 (pas d'unité de mesure tj_necessite_nct.msr_id est NULL) > carotte 1 kg (il y a une unité de mesure "" n'est pas NULL)
je suppose que m.msr_id est la clé primaire de la table mesure m donc elle ne peut pas être nulle. Il suffit donc de définir une jointure ouverte de la table necessite n vers la table mesure m pour choper aussi les lignes de n sans correspondance dans m.
c'est exactement là-dessus que je bloquait, soit je n'avais pas assez de valeurs (je ne prenais pas les ingrédients avec n.msr_id à NULL) soit j'en avais beaucoup trop, comme tu dis + haut (je prenais tous les ingrédients où n.msr_id est à NULL). je ne comprenais pas pourquoi because "ma" "logique" avec AND et OR me semblait correcte.
> vaut-il mieux d'ailleurs ajouter dans t_mesure_msr un > NULL
Dans le cas précis cela reviendrait au même. Cela dit, il vaut mieux distinguer la valeur NULL (= indéfini ou existant) de la valeur "" ( > défini comme égal à la chaîne vide).
[...]
OK, donc je reste comme j'ai fait càd avec n.msr_id à NULL qd il n'y a pas de mesure associée à l'ingrédient.
merci encore, je dois retourner potasser les "JOIN". -- Yvon Thoraval
déjà, il vaut mieux décrire explicitement les critères de jointure, ça
évite d'en oublier un critère et aboutir à une table de 1000000*100000
lignes :
SELECT i.igd_nom, m.msr_nom, n.nct_quantite
FROM tj_necessite_nct as n
LEFT JOIN t_mesure_msr as m
ON n.msr_id = m.msr_id
INNER JOIN t_ingredient_igd as i
ON n.igd_id = i.igd_id
WHERE n.rct_id = "1"
(au passage, emploie des alias pour les noms de table à rallonge)
ca marche impec ! merci beaucoup, il y a des gars vraiment en forme dès
le début d'année...
[...]
> ca correspond à deux cas de figure :
> carotte 2 (pas d'unité de mesure tj_necessite_nct.msr_id est NULL)
> carotte 1 kg (il y a une unité de mesure "" n'est pas NULL)
je suppose que m.msr_id est la clé primaire de la table mesure m donc elle
ne peut pas être nulle. Il suffit donc de définir une jointure ouverte de
la table necessite n vers la table mesure m pour choper aussi les lignes de
n sans correspondance dans m.
c'est exactement là-dessus que je bloquait, soit je n'avais pas assez de
valeurs (je ne prenais pas les ingrédients avec n.msr_id à NULL) soit
j'en avais beaucoup trop, comme tu dis + haut (je prenais tous les
ingrédients où n.msr_id est à NULL).
je ne comprenais pas pourquoi because "ma" "logique" avec AND et OR me
semblait correcte.
> vaut-il mieux d'ailleurs ajouter dans t_mesure_msr un
> NULL
Dans le cas précis cela reviendrait au même. Cela dit, il vaut mieux
distinguer la valeur NULL (= indéfini ou existant) de la valeur "" ( > défini comme égal à la chaîne vide).
[...]
OK, donc je reste comme j'ai fait càd avec n.msr_id à NULL qd il n'y a
pas de mesure associée à l'ingrédient.
merci encore, je dois retourner potasser les "JOIN".
--
Yvon Thoraval
déjà, il vaut mieux décrire explicitement les critères de jointure, ça évite d'en oublier un critère et aboutir à une table de 1000000*100000 lignes :
SELECT i.igd_nom, m.msr_nom, n.nct_quantite FROM tj_necessite_nct as n LEFT JOIN t_mesure_msr as m ON n.msr_id = m.msr_id INNER JOIN t_ingredient_igd as i ON n.igd_id = i.igd_id WHERE n.rct_id = "1"
(au passage, emploie des alias pour les noms de table à rallonge)
ca marche impec ! merci beaucoup, il y a des gars vraiment en forme dès le début d'année...
[...]
> ca correspond à deux cas de figure : > carotte 2 (pas d'unité de mesure tj_necessite_nct.msr_id est NULL) > carotte 1 kg (il y a une unité de mesure "" n'est pas NULL)
je suppose que m.msr_id est la clé primaire de la table mesure m donc elle ne peut pas être nulle. Il suffit donc de définir une jointure ouverte de la table necessite n vers la table mesure m pour choper aussi les lignes de n sans correspondance dans m.
c'est exactement là-dessus que je bloquait, soit je n'avais pas assez de valeurs (je ne prenais pas les ingrédients avec n.msr_id à NULL) soit j'en avais beaucoup trop, comme tu dis + haut (je prenais tous les ingrédients où n.msr_id est à NULL). je ne comprenais pas pourquoi because "ma" "logique" avec AND et OR me semblait correcte.
> vaut-il mieux d'ailleurs ajouter dans t_mesure_msr un > NULL
Dans le cas précis cela reviendrait au même. Cela dit, il vaut mieux distinguer la valeur NULL (= indéfini ou existant) de la valeur "" ( > défini comme égal à la chaîne vide).
[...]
OK, donc je reste comme j'ai fait càd avec n.msr_id à NULL qd il n'y a pas de mesure associée à l'ingrédient.
merci encore, je dois retourner potasser les "JOIN". -- Yvon Thoraval