Search  
Thursday, October 01, 2020 ..:: 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 + GR...
 SELECT-SQL + GROUP BY in vfp9
 
 3/11/2013 12:17:52 PM
User is offlineRomeo
664 posts
1st


SELECT-SQL + GROUP BY in vfp9
 (N/A)
Am vrut sa execut un SELECT SQL+ Group By in vfp 9. A trebuit ca inainte sa folosesc SET ENGINEBEHAVIOR 70; altfel a dat permanent eroare.

In vfp9 chiar nu poti executa SELECT ... GROUP BY ?
 3/11/2013 12:35:53 PM
User is offlinegldesign
406 posts
2nd


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
Se poate, dar la GROUP BY trebuie sa pui toate campurile ce apar in SELECT si care nu sunt agregat
 3/11/2013 12:35:54 PM
User is offlinegaboru
65 posts


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
 Romeo wrote
Am vrut sa execut un SELECT SQL+ Group By in vfp 9. A trebuit ca inainte sa folosesc SET ENGINEBEHAVIOR 70; altfel a dat permanent eroare.

In vfp9 chiar nu poti executa SELECT ... GROUP BY ?


Am folosit fara probleme in vfp 9 clauza Group by. Sigur problema pleaca de altundeva
 3/11/2013 12:36:47 PM
User is offlinemyself
153 posts
5th


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
Se poate folosi in VFP9, daca grupezi dupa toate campurile unde nu faci sum, count, sau ce mai faci tu acolo.
De ex:
Select sum(salariu) as salariu, angajat From angajati group by angajat ->va merge in VFP9(cu ENGINE 90)
Select sum(salariu) as salariu, angajat,cnp From angajati group by angajat ->NU va merge in VFP9(cu ENGINE 90)
 3/12/2013 12:58:41 PM
User is offlineRomeo
664 posts
1st


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
 myself wrote
Se poate folosi in VFP9, daca grupezi dupa toate campurile unde nu faci sum, count, sau ce mai faci tu acolo.
De ex:
Select sum(salariu) as salariu, angajat From angajati group by angajat ->va merge in VFP9(cu ENGINE 90)
Select sum(salariu) as salariu, angajat,cnp From angajati group by angajat ->NU va merge in VFP9(cu ENGINE 90)


asa merge la mine:

SET ENGINEBEHAVIOR 70
SELECT sof, schimb, MAX(totOreLucr) AS totorelucr, MAX(fTotOre) AS ftotore, tipzi, motiv FROM wCrsRap09man;
GROUP BY sof ORDER BY sof DESC INTO CURSOR wCrsRap09

 3/12/2013 3:13:45 PM
User is offlineGrigore Dolghin
4000 posts
www.class-software.ro
1st






Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
N-o sa inteleg niciodata de ce se mai recomanda folosirea lui SET ENGINEBEHAVIOR 70. Daca e folosit exact ca mai sus poate returna tampenii cu gratie.

De exemplu, daca in coloanele sof si schimb avem urmatoarele valori:
SOF           SCHIMB
1                   1
1                    2
1                   3
2                   1
2                   2
2                   3

codul de mai sus o sa grupeze dupa SOF si o sa RETURNEZE O VALOARE LA INTAMPLARE IN COLOANA SCHIMB.

Intrebarea mea e cui naiba ii trebuie  valori "la intamplare". Ce sa faci cu ele si la ce-s bune?


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/13/2013 1:02:00 PM
User is offlineRomeo
664 posts
1st


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
MAX(totOreLucr) AS totorelucr, MAX(fTotOre) si GROUP BY sof ORDER BY sof DESC asigura unicitatea, orice situatie aleatoare fiind exclusa.
Este folosita intr-un raport.
 3/13/2013 3:27:36 PM
User is offlineGrigore Dolghin
4000 posts
www.class-software.ro
1st






Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
Eu n-am pomenit nimic de coloanele incluse in functii de agregare. Alea sunt ok si asa se folosesc.

Problema mea era cu campul schimb, care da valori aleatoare. Si sunt aproape sigur ca desi e in lista de campuri din SELECT, nu e folosit pe nicaieri (fiindca daca e folosit, e nasol). Si daca tot nu-l folosesti, de ce-l mai pui? Si daca-l scoti, atunci la ce-ti mai trebuie SET ENGINE BEHAVIOR 70?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/13/2013 3:40:59 PM
User is offlinemyself
153 posts
5th


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
Nu cred ca intoarce chiar valori aleatoare. Daca nu ma insel va intoarce prima(sau ultima, nu mai stiu exact) valoare valabilia conform gruparilor gasita in tabela.
 3/13/2013 3:46:35 PM
User is offlineGrigore Dolghin
4000 posts
www.class-software.ro
1st






Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
In VFP o intoarce pe prima, intr-adevar, datorita modului in care sunt stocate datele fizic pe disc. Pe alte SGBD-uri poate intoarce alta valoare.

Dar intrebarea ramane: la ce e buna prima valoare? are ea vreo semnificatie speciala? si daca prima inregistrare se sterge campul ala o sa arate valoarea din urmatoarea inregistrare, adica alta fata de acum 2 minute.

Daca privesti problema din aceasta perspectiva o sa-ti dai seama ca valoarea aia (aleatoare sau nu, prima sau ultima sau a treia sau naiba s-o ia a cata e) nu-ti este buna la nimic.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/14/2013 6:26:10 AM
User is offlineRomeo
664 posts
1st


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
 
Problema mea era cu campul schimb, care da valori aleatoare. Si sunt aproape sigur ca desi e in lista de campuri din SELECT, nu e folosit pe nicaieri (fiindca daca e folosit, e nasol). Si daca tot nu-l folosesti, de ce-l mai pui? Si daca-l scoti, atunci la ce-ti mai trebuie SET ENGINE BEHAVIOR 70?


Un sofer nu are voie sa lucreze in timpul unei luni pe doua schimburi diferite. Este totusi o informatie utila cand grupez datele in raport.


 3/14/2013 6:26:19 AM
User is offlineRomeo
664 posts
1st


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
 
Problema mea era cu campul schimb, care da valori aleatoare. Si sunt aproape sigur ca desi e in lista de campuri din SELECT, nu e folosit pe nicaieri (fiindca daca e folosit, e nasol). Si daca tot nu-l folosesti, de ce-l mai pui? Si daca-l scoti, atunci la ce-ti mai trebuie SET ENGINE BEHAVIOR 70?


Un sofer nu are voie sa lucreze in timpul unei luni pe doua schimburi diferite. Este totusi o informatie utila cand grupez datele in raport.


 3/14/2013 12:44:31 PM
User is offlineGrigore Dolghin
4000 posts
www.class-software.ro
1st






Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
Pai atunci pune si campul schimb in clauza group by. Rezultatul o sa fie acelasi si vei putea sa renunti la set enginebehavior 70.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 4/12/2013 3:19:54 PM
User is offlinevaly.m
618 posts
1st


Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
 Grigore Dolghin wrote
In VFP o intoarce pe prima, intr-adevar, datorita modului in care sunt stocate datele fizic pe disc. Pe alte SGBD-uri poate intoarce alta valoare.

Dar intrebarea ramane: la ce e buna prima valoare? are ea vreo semnificatie speciala? si daca prima inregistrare se sterge campul ala o sa arate valoarea din urmatoarea inregistrare, adica alta fata de acum 2 minute.

Daca privesti problema din aceasta perspectiva o sa-ti dai seama ca valoarea aia (aleatoare sau nu, prima sau ultima sau a treia sau naiba s-o ia a cata e) nu-ti este buna la nimic.


Am doua tabele Produse, avand campuri codbare,denumire, ambele.
O tabela vine de la un magazin, una de la alt magazin. Fiecare au introdus acelasi cod de bare dar denumire diferita (ex: 5941000005 Sapun Dove 100g    --> 5941000005 Dove Sapun 100g).
In cazul asta ma intereseaza un select cu aparitia codului o singura data iar denumirea oricare ar fi, ca nu ma intereseaza cum a introdus fiecare. In cazul asta nu grupez oare doar dupa cod? (avand si altceva inafara de cod,denumire in select). Iar mie de fiecare data cand am facut un asemenea select mi-a returnat ultima valoare intalnita pentru campul care nu se afla in clauza Group By.

CREATE CURSOR proba (c1 c(2),c2 c(4))
INSERT INTO proba VALUES ('01','Mar')
INSERT INTO proba VALUES ('01','Mart')
SELECT c1,c2 FROM proba GROUP BY c1

Returneaza 01  |  Mart

Vali Maties - Beginner programmer
 4/12/2013 3:58:47 PM
User is offlineGrigore Dolghin
4000 posts
www.class-software.ro
1st






Re: SELECT-SQL + GROUP BY in vfp9
 (N/A)
Good catch, deci e ultima, nu prima. Intrebarea e ce faci cand ai 10 valori diferite si o vrei pe prima. Sau pe a treia. Sau cand ai nevoie sa faci group by o coloana, dar iti trebuie mai multe coloane in select si nu vrei sa grupezi si pe ele.

Acest gen de situatii se trateaza cu group by si un subselect pe aceeasi tabela, ca in codul de mai jos:

SELECT t1.camp1, t1.camp2, t1.camp3, ..., t1.campN
FROM (SELECT camp_grupare, MIN(DENUMIRE) As DENUMIRE From tabela Group By camp_grupare) As t2
INNER JOIN tabela t1 ON t1.camp_grupare = t2.camp_grupare And t1.DENUMIRE = t2.DENUMIRE


Se face un inner join intre tabela si un select cu group by pe aceeasi tabela. Eu am folosit MIN() ca sa obtin prima valoare, dar este evident ca se pot folosi orice functii agregat acolo.


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

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement