Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  SELECT - SQL Co...
 SELECT - SQL Command in VFP 9.0
 
 10/22/2010 3:40:48 PM
User is offlinestefan_JKSL
62 posts


SELECT - SQL Command in VFP 9.0
 (N/A)
am trecut la 9.0 si toate comenzile select din 7.0 imi genereaza mesajul de eroare "SQL: GROUP BY clause is invalid (Error 1807)"
am setat SET ENGINEBEHAVIOR 70 insa vreau sa-l fac sa mearga si pe SET ENGINEBEHAVIOR 90.
exista un capitol la help "Considerations for SQL SELECT Statements" pe care l-am citit insa tot nu i-am dat de cap.
in selecturile mele folosesc functia sum() ceea ce se incadreaza la "Aggregate Functions" din helpul respectiv, insa dupa modificarile facute selectul tot nu vrea sa mearga.
s-a mai lovit cineva de situatia asta?
 10/22/2010 4:12:07 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: SELECT - SQL Command in VFP 9.0
 (N/A) Modified By Grigore Dolghin  on 10/22/2010 4:13:04 PM)
Da, toata lumea s-a lovit de situatia asta:

SET ENGINEBEHAVIOR 90:

Select Nume, Prenume, Sum(Salariu) From Tabela  -- da eroare
Select Nume, Prenume, Sum(Salariu) From Tabela Group By Nume - da eroare
Select Nume, Prenume, Sum(Salariu) From Tabela Group By Nume, Prenume - functioneaza corect.

Vezi diferenta dintre ele?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/22/2010 4:19:18 PM
User is offlinestefan_JKSL
62 posts


Re: SELECT - SQL Command in VFP 9.0
 (N/A) Modified By stefan_JKSL  on 10/22/2010 4:19:32 PM)
le-am grupat... pentru ca grupate imi trebuiesc.
SELECT an_balanta as anul,;
       luna_balanta as luna,;
       Conturi.cont, Plan_conturi.denumire,;
       Plan_conturi.functie, Plan_conturi.sintetic,;
       SUM(Conturi.debit)  as RPD,;
       SUM(Conturi.credit) as RPC ;
 FROM conturi;
    LEFT OUTER JOIN plan_conturi ;
   ON  Conturi.cont = Plan_conturi.cont;
 WHERE  year( Conturi.data_nota) == an_balanta;
   AND  month( Conturi.data_nota) < luna_balanta;
 GROUP BY Conturi.cont;
 ORDER BY Conturi.cont;
 INTO TABLE (_tabel_RP)

 10/22/2010 4:26:21 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: SELECT - SQL Command in VFP 9.0
 (N/A)
Inseamna ca nu te-ai uitat bine. Ia mai uite-te o data si arunca un ochi la cate campuri sunt in select si cate in group by. Exemplul al doilea, desi ARE group by, nu functioneaza. Uite-te din nou la cele trei linii pe care ti le-am dat.

(Evit sa-ti dau teoria fiindca nu cred ca o sa prinda. Aceeasi teorie era si in capitolul ala pe care zici ca nu l-ai inteles. N-ar avea nici un rost sa-ti dau acelasi text - prefer sa-ti dau exemplu functionale si nefunctionale. Cand o sa intelegi diferenta dintre ele o sa intelegi si cum e cu group by-ul ala)

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/22/2010 5:41:51 PM
User is offlinestefan_JKSL
62 posts


Re: SELECT - SQL Command in VFP 9.0
 (N/A) Modified By stefan_JKSL  on 10/22/2010 5:45:09 PM)
ai dreptate. am adaugat grupare si cum ai spus tu.... functioneaza.
dar care-i ideea? trebuie sa grupez toate campurile inaintea lui sum()?
 10/22/2010 6:21:14 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: SELECT - SQL Command in VFP 9.0
 (N/A)
Da, toate campurile care nu sunt incluse intr-o functie de agregare trebuie trecute in group by. Explicatia e urmatoarea:

Sa zicem ca ai instructiunea:

Select Nume, Prenume, Sum(Salariu) From stat_plata

O sa-ti returneze o inregistrare care arata cam asa: POPESCU ION 5002994005994

unde numaru' ala e suma TUTUROR salariilor. Asta inseamna ca celelalte doua campuri sunt degeaba - n-ai ce sa faci cu informatia din ele (e un nume la intamplare). Asta era posibil in VFP7 si era o prostie.

Sunt doua rezolvari posibile: ori scoti nume, prenume din SELECT si obtii SELECT SUM(SALARII) From stat_plata, care iti returneaza totalul salariilor din tabela
Ori le pui SI in group by si obtii SELECT NUME, PRENUME, SUM(SALARII) FROM stat_plata GROUP BY nume, prenume, care iti returneaza suma tuturor salariilor FIECARUI angajat.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  SELECT - SQL Co...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement