Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] wybieranie najnowszych i najstarszych danych z przedziału czasu
Forum PHP.pl > Forum > Bazy danych > MySQL
grzemach
Witam,
Tworząc aplikację napotkałem na pewien problem problem, otóż aplikacja ma pobierać podsumowanie w pewnym okresie (ustawionym przez użytkownika).
SQL działą poprawnie:
  1. $sql = 'select
  2. (select `login` from '.TABLE_USERS.' where '.TABLE_RESULTS.'.`userId`='.TABLE_USERS.'.`id`) as login,
  3.  
  4. sum(`Fills`), sum(`Qty`),
  5. `Start_Cash`,
  6.  
  7. sum(`Gross_Realized`), sum(`ECN_LSE_Exch`),
  8. sum(`Net_Realized`),
  9. (`End_Balance`),
  10. sum(`Clear`),sum(`NSCC_LSE_Exe`),sum(`SEC_NFA_LSE_PMT`),
  11. sum(`NYSE_TAF`),sum(`NSDQ_LSE_Liq`),
  12.  
  13.  
  14. (select `name` from '.TABLE_USERS.' where '.TABLE_RESULTS.'.`userId`='.TABLE_USERS.'.`id`),
  15. (select `surname` from '.TABLE_USERS.' where '.TABLE_RESULTS.'.`userId`='.TABLE_USERS.'.`id`)
  16.  
  17. from '.TABLE_RESULTS.' where (';
  18. foreach ($usersArray as $userId){
  19. $sql .= ' `userId`=\''.$userId.'\' or';
  20. }
  21. $sql = substr($sql,0,strlen($sql)-2).')'.$sqlInside.' group by `userId` order by login ASC';


Jest jednak małe ale...
Wartość `Start_Cash` i `End_Balance`, powinny być odpowiednio pierwsza z danego okresu, oraz ostatnia z danego okresu... domyślam się, że oba rozwiązania będą prawie identyczne... jednak mi brakuje pomysłu jak można by to rozwiązać... jestem przekonany, że istnieje coś jak max() min(), jednak dla pierwszego i ostatniego elelementy...

Czyli trzeba by dodać
  1. SELECT `start_cash` FROM '.TABLE_RESULTS.'.`userId`='.TABLE_RESULTS.'.`userId` ORDER BY `dateOfResult` ASC LIMIT 1
tylko jak to zrobić...
erix
Hmm, chyba możesz skorzystać z czegoś w stylu:
  1. @maxId := (SELECT ID FROM tabela ORDER BY `date` ASC LIMIT 1);
  2. @minId := (SELECT ID FROM tabela ORDER BY `date` DESC LIMIT 1);
  3. SELECT * FROM WHERE ID=@maxId OR ID=@minId

?

Pisane z palca, mogłem składnię pomylić. winksmiley.jpg
grzemach
ogólnie zdaję sobie z tego sprawę, jednak miałem nadzieję, że da się to jakoś inaczej załatwić, bo w ten sposób będę miał naprawdę masę zapytań...
a siedzę już nad tym prawie 5 dni... aby zrobić to najprościej...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.