Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MYSQL/PHP - wartość maksymalna w całej bazie.
Forum PHP.pl > Forum > Bazy danych > MySQL
nekros
Witam.


Otóż mam pewien problem i niewiem jak sobie poradzić.
Więc tak ...

Mam bazę a w niej 80~ tabel , każda tabela składa się z takiej samej struktury tzn. mniej wiecj coś w tym stylu - imie , nazwisko , zarobki , data.

I w kazdej tabeli jest jakies 1000 rekordów. I teraz chciałbym znaleść ziomka spośród tych wszystkich tabel (80) który zarobił najwięcej w danym dniu/miesiacu.

Poprzez ten kod zbiera max(salary) czyli maxymalny zarobek dla wszystkich tabeli , ale niestety dla każdej z osobna.

  1. <?php
  2.  
  3. $dbname = 'stats';
  4.  
  5. if (!mysql_connect('host', 'user', 'password')) {
  6. echo 'Could not connect to mysql';
  7. }
  8.  
  9. $result = mysql_list_tables($dbname);
  10.  
  11. if (!$result) {
  12. echo "DB Error, could not list tables\n";
  13. echo 'MySQL Error: ' . mysql_error();
  14. }
  15.  
  16. while ($row = mysql_fetch_row($result)) {
  17. echo '<pre>';
  18.  
  19. // added code to use the tablename and select all records from that table
  20. echo ('<b>Table ' . $row[0] . '</b><br /><table>');
  21. $sql="select name, MAX(salary) from " .$row[0]. " WHERE date = (SELECT CURDATE())";
  22. $result2 = mysql_query($sql) or die ('SQL problem selecting from table');
  23. if (mysql_num_rows($result2) >= 1){
  24. echo ('<tr>');
  25. while ($row2 = mysql_fetch_row($result2)) {
  26. for ($i=0; $i<mysql_num_fields($result2); $i ++){
  27.  
  28. echo ('<td>' . $row2[$i] . '</td>');
  29.  
  30. }
  31. echo ('</tr>');
  32. }
  33. } else {
  34. echo ('<tr><td colspan="999">No records for table ' . $row[0] . '</td></tr>');
  35. }
  36. echo ('</table>');
  37.  
  38.  
  39. echo '</pre>';
  40. }
  41.  
  42. ?>



Table A
Ferdinand 9115$

Table B
George 5074$

Table C
Richie 5310$

Table D
Marco 5590$


Jakieś propozycje?
pedro84
Poczytaj o UNION.

@down, masz rację, poprawiłem swojego posta. Gdzieś umknął mi fragment o takiej samej strukturze.

@Autor, po kiego Ci tyle tabel, właściwie takich samych?

@Wicepsik, ILE? biggrin.gif
Mchl
Prędzej o UNION.

80 tabel z taką samą strukturą. Ktoś tu przespał zajęcia z normalizacji.
Wicepsik
Cytat(Mchl @ 14.04.2010, 17:47:01 ) *
Prędzej o UNION.

80 tabel z taką samą strukturą. Ktoś tu przespał zajęcia z normalizacji.


Pewnie dopiero się chłopak uczy. Ja jak zaczynałem z MySQL to miałem 360 tabel haha.gif

@nekros
Pokaż strukturę bazy danych.

Cytat(pedro84 @ 14.04.2010, 17:31:11 ) *
@Wicepsik, ILE? biggrin.gif


Jedna tabela na każdy dzień biggrin.gif

  1. SELECT * FROM date('z') .....
nekros
Kod
ID    name   Salary  Date  Place


Dzięki UNION ALL złącze te wszystkie MAXy w jedna tabelę , tylko niebardzo wiem jakby to wrzucić w petle aby zgarneło MAX z tej złączonej :~
Wicepsik
Powiedz mi, czemu stworzyłeś 80 tabel. Czym się różnią rekordy, że muszą być w oddzielnych tabelach. Każda tabela to inny miesiąc ?
nekros
hmm to była tylko baza testowa , ale ogólnie chodzi o coś takiego:

Wytłumacze to na danych statystycznych gry.
Kazda tabela to osobny świat .

w kazdej tabeli sa rekordy graczy z danego servera ( name , level , experience itp )

no a reszta to juz wiadomo , np. MAX(experience) z wszystkich tabel , czyli najlepszy gracz w skali wszystkich światów.
Wicepsik
Pierwsza tabela
- name
- experience
itd..
- id_swiat

Druga tabela (swiaty)
- id
- nazwa swiatu



http://pl.wikibooks.org/wiki/SQL_typy_zlaczen
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.