dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] Multi-SGBD


From: Régis Houssin
Subject: Re: [Dolibarr-dev] Multi-SGBD
Date: Thu, 20 Sep 2007 10:35:49 +0200
User-agent: RoundCube Webmail/0.1-rc1

par exemple dans /htdocs/compta/index.php on a cette requête :

-------------------------------------------------------------------
$sql = "SELECT sum(f.total) as tot_fht, sum(f.total_ttc) as tot_fttc,";
$sql.= " s.nom, s.rowid as socid,";
$sql.= " p.rowid, p.ref, p.facture, p.fk_statut, p.total_ht, p.total_ttc";
if (!$user->rights->commercial->client->voir && !$socid) $sql .= ",
sc.fk_soc, sc.fk_user ";
$sql.= " FROM (".MAIN_DB_PREFIX."societe AS s, ".MAIN_DB_PREFIX."commande
AS p";
if ($user->rights->commercial->client->voir || $socid) $sql .= ")";
if (!$user->rights->commercial->client->voir && !$socid) $sql .= ",
".MAIN_DB_PREFIX."societe_commerciaux as sc)";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."co_fa AS co_fa ON co_fa.fk_commande =
p.rowid";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture AS f ON co_fa.fk_facture =
f.rowid";
--------------------------------------------------------------------

qui met entre parenthèses les tables après le FROM pour palier au
problème avec LEFT JOIN qu'on avait

avec MSSQL on obtient cette erreur :

---------------------------------------------------------------------
TYPE GESTIONNAIRE DE BASE DE DONNÉE: mssql
REQUETE DERNIER ACCES EN BASE EN ERREUR: SELECT sum(f.total) as
tot_fht, sum(f.total_ttc) as tot_fttc, s.nom, s.rowid as socid,
p.rowid, p.ref, p.facture, p.fk_statut, p.total_ht, p.total_ttc FROM
(llx_societe AS s, llx_commande AS p) LEFT JOIN llx_co_fa AS co_fa ON
co_fa.fk_commande = p.rowid LEFT JOIN llx_facture AS f ON
co_fa.fk_facture = f.rowid WHERE p.fk_soc = s.rowid AND p.fk_statut =
3 AND p.facture=0 GROUP BY p.rowid
CODE RETOUR DERNIER ACCES EN BASE: DB_ERROR_SYNTAX
---------------------------------------------------------------------


si j'enlève les parenthèses et que l'utilisateur n'a pas le droit de voir
tous les clients, j'ai cette erreur sous MYSQL:

---------------------------------------------------------------------
Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:

Type gestionnaire de base de donnée: mysqli
Requete dernier acces en base en erreur: SELECT sum(f.total) as tot_fht,
sum(f.total_ttc) as tot_fttc, s.nom, s.rowid as socid, p.rowid, p.ref,
p.facture, p.fk_statut, p.total_ht, p.total_ttc, sc.fk_soc, sc.fk_user FROM
llx_societe AS s, llx_commande AS p, llx_societe_commerciaux as sc LEFT
JOIN llx_co_fa AS co_fa ON co_fa.fk_commande = p.rowid LEFT JOIN
llx_facture AS f ON co_fa.fk_facture = f.rowid WHERE p.fk_soc = s.rowid AND
s.rowid = sc.fk_soc AND sc.fk_user = 1 AND p.fk_statut = 3 AND p.facture=0
GROUP BY p.rowid
Code retour dernier acces en base: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base: Unknown column 'p.rowid' in 'on
clause'
----------------------------------------------------------------------


Régis


On Thu, 20 Sep 2007 10:00:53 +0200, "Laurent Destailleur (Eldy)"
<address@hidden> wrote:
> La premiere chose a faire est de corriger les pb de requetes trop 
> specifiques.
> Car si elles ne fonctionne pas avec un autre SGBD, elle ne 
> fonctionneront avec aucune couche d'abstraction (que ce soit PDO, ou
> autre).
> Il ne devrait pas y avoir de tel code.
> 
> As-tu un exemple de tel requete ?
> 
> 
> Régis Houssin a écrit :
>> Bonjour,
>>
>> Après plusieurs tests sur MSSQL (grace à Simon Desee) il s'avère que
>> plusieurs requête dans le code sont trop spécifique à mysql et pose
>> problème, il faudrait qu'on voit pour utiliser soit PDO (qui imposerait
>> PHP5), soit ADOdb qui est compatible PHP4/PHP5 (PHP4 allant disparaitre
>> !!!) afin de faire une réelle couche d'abstraction, ce qui permettrait
>> d'être vraiment Multi-SGBD.
>>
>> Qu'en pensez-vous ?
>>
>> Régis
>>
>>
>>
>> _______________________________________________
>> Dolibarr-dev mailing list
>> address@hidden
>> http://lists.nongnu.org/mailman/listinfo/dolibarr-dev
>>
>>   
> 
> 
>
-- 
Cordialement
Houssin Régis





reply via email to

[Prev in Thread] Current Thread [Next in Thread]