Re: MySQL

Page principale

Répondre à ce message
Auteur: Stephane Bonhomme
Date:  
À: guilde
Sujet: Re: MySQL
Salut Fred

Tu ne fais de pas de jointure entre les deux tables, donc un produit
cartesien d'un sous ensemble de la table adherent (statut = 1) avec la
table adherents_extrafields

Il te faut faire la jointure par un champ commun (id)

SELECT llx_adherent.lastname, llx_adherent.firstname,
llx_adherent_extrafields.fpf FROM llx_adherent
LEFT JOIN llx_adherent_extrafields ON llx_adherent.id =
llx_adherent_extrafields.id
WHERE llx_adherent.statut = 1



Le vendredi 06 février 2015 à 08:47 +0100, Frédéric a écrit :
> Hello,
>
> Je m'arrache les cheveux avec une requête MySQL sur la base de Dolibarr.
>
> J'ai 2 tables, llx_adherent et llx_adherents_extrafields, sur lesquelles je veux extraire des champs,
> avec la requête :
>
> SELECT llx_adherent.lastname, llx_adherent.firstname, llx_adherent_extrafields.fpf
> FROM llx_adherent, llx_adherent_extrafields
> WHERE llx_adherent.statut = 1
>
> Mais j'obtiens une réponse avec 14896 lignes, alors que je n'ai que 196 entrées dans les tables
> llx_adherent et llx_adherent_extrafields. Les lignes se répètent, mais avec des variations dans le champ
> fpf (un coup à 0, un coup à 1, un coup à NULL)...
>
> Au passage, 14896 / 196 = 76, et 76 est exactement le nombre d'adhérents ayant le champ statut à 1 :o/
>
> Ma requête a donc un souci, mais je ne pige pas...
>
> Merci d'avance pour vos lumières.
>


-- 
Stéphane Bonhomme           --           Exselt Services


        Formations, Conseil et Réalisations en Ingénierie Documentaire,
                    Technologies Web et Logiciels Libres 
             stephane@???   -   http://www.exselt.com
               +33 4 56 14 27 09   /   +33 6 88 57 27 08