Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] w jednym zapytaniu zmienne z dwóch zapytań
Forum PHP.pl > Forum > Bazy danych
M@X
Witam.
Mam jedno zapytanie:
  1. echo 'Najlepszy wynik: <br />';
  2. $max=mysql_query('SELECT MAX(wynik), data FROM wyniki WHERE id_usera='.$player.' GROUP BY wynik ORDER BY wynik DESC');
  3. $wmax=mysql_fetch_array($max);
  4. echo ''.$wmax[0].' - '.$wmax[1].'';


oraz pare linijek niżej w kodzie drugie zapytanie:
  1. $query=mysql_query('SELECT * FROM zawodnik_pol WHERE id_klub='.$club.' AND rola like "z%" ORDER BY data_start ASC');
  2. while($row=mysql_fetch_array($query))
  3. {
  4. echo '<a href="index.php?p=profile&country='.$country.'&province='.$province.'&club='.$club.'&player='.$row['id_zaw'].'&l='.$_SESSION['language'].'">'.$row['imie'].' '.$row['nazwisko'].'</a> '.$row['data_ur'].', '.$row['data_start'].' <br />
  5. ';


Na końcu po wyświetleniu $row['data_ur'] i $row['data_start'] chciałbym wstawić również to co jest w zapytaniu wyżej czyli to: echo ''.$wmax[0].' - '.$wmax[1].'';
W jaki sposób można to wykonać ? skoro to dwa inne zapytania z dwóch różnych tabel.
Lejto
podam przykład
jedno zapytanie wybiera dane z 2 tabel
  1. SELECT wyniki.imie, zawodnik_pol.DATA FROM wyniki,zawodnik_pol;

tym zapytaniem pobierasz wartość imie z tabeli wyniki i wartość data z tabeli zawodnik_pol, za pomocą tego przykładu skonstruuj swoje zapytanie
M@X
rozwiązanie wygląda na idealne, tylko mam problem z wyświetlaniem, wywala mi każdy rekord z pierwszej tabeli razy ilość rekordów z drugiej tabeli... Zapewne przy wywoływaniu kolumny też trzeba dać nazwe tabeli z której jest wywołana, ale w którym miejscu to ująć ?:
'.$row['zawodnik_pol.id_zaw'].'
'.$rowzawodnik_pol.['id_zaw'].'
zawodnik_pol.'.$row['id_zaw'].'
W którym miejscu umieścić nazwe tabeli ?
Shili
W nijakim. Żeby tak zrobić musisz mieć jakieś pole, które łączy te dwie tabele. Jeśli masz musisz ustawić odpowiedni warunek where.

Przyjmując, że oba by miały pole id_usera to trzeba ustawić
  1. ... WHERE wyniki.id_usera = zawodnik_pol.id_usera
M@X
hmm w takim razie mam 2 problemy:

1) jak już widzicie ten WHERE mam mocno rozbudowany: WHERE id_klub='.$club.' AND rola like "z%" ORDER BY data_start ASC'); - więc w którym miejscu to umieścić ? smile.gif

2) i drugi problem chyba jeszcze bardziej rozbudowany, bo mam oczywiście pola porównawcze gdzie w obu tabelach jest to samo ID tylko że przykłądowo w tabeli "zawodnik_pol" ma ID np: 3, natomiast w drugiej tabeli jest kilka pól o ID 3. Chodzi o to że w tym selekcie do tabeli "wyniki" jest mechanizm który wylicza najwyższy wynik z danego ID.
Shili
  1. SELECT wyniki.MAX(wynik), wyniki.DATA, zawodnik_pol.id_zaw, zawodnik_pol.LANGUAGE, zawodnik_pol.imie, zawodnik_pol.nazwisko, zawodnik_pol.data_ur, zawodnik_pol.data_start
  2. FROM zawodnik_pol, wyniki
  3. WHERE zawodnik_pol.id_zaw=wyniki.id_usera AND zawodnik_pol.id_klub='.$club.' AND zawodnik_pol.rola LIKE "z% AND wyniki.id_usera='.$player.'
  4. GROUP BY wyniki.data
  5. ORDER BY data_start ASC


Nie wiem jak zbudowana jest Twoja baza, ciężko mi tutaj cokolwiek sprawdzić, więc pisane z palca, nie wiem czy faktycznie dobrze podobierałam pola.
M@X
hmmm wyskakuje:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
sad.gif
Lejto
podaj jeszcze raz cały kod z twoimi końcowymi zapytaniami
M@X
tak wygląda ten fragment kodu:

  1. IF((isset($_GET['country']))&&(isset($_GET['province']))&&(isset($_GET['club']))&&(isset($_GET['player'])))
  2. {
  3. $country=intval($_GET['country']);
  4. $province=intval($_GET['province']);
  5. $club=intval($_GET['club']);
  6. $player=intval($_GET['player']);
  7.  
  8. //.......................... (tutaj reszta zapytań)
  9.  
  10. //[b]WYNIK STĄD MA BYĆ POKAZANY NIŻEJ[/b]
  11. echo '<br /><br />Najlepszy wynik: <br />';
  12. $max=mysql_query('SELECT MAX(wynik), data FROM wyniki WHERE id_usera='.$player.' GROUP BY wynik ORDER BY wynik DESC');
  13. $wmax=mysql_fetch_array($max);
  14. echo ''.$wmax[0].' - '.$wmax[1].'';
  15.  
  16.  
  17.  
  18. echo ('<br><br><br><br>WIEK:<br><br><br><br>');
  19. $zapytanie = ("SELECT data_ur FROM zawodnik_pol WHERE id_zaw=$player;");
  20. $result=mysql_query($zapytanie);
  21. $r=mysql_fetch_assoc($result);
  22. $data=$r['data_ur'];
  23.  
  24. $wiek=wiek($data);
  25.  
  26. echo $wiek;
  27.  
  28.  
  29. //koniec kodu z wynikami/
  30. }
  31. elseif((isset($_GET['country']))&&(isset($_GET['province']))&&(isset($_GET['club'])))
  32. {
  33. $country=intval($_GET['country']);
  34. $province=intval($_GET['province']);
  35. $club=intval($_GET['club']);
  36.  
  37. $tren=mysql_query('SELECT * FROM zawodnik_pol WHERE id_klub='.$club.' AND rola like "tre"');
  38. while($row=mysql_fetch_array($tren))
  39. {
  40. echo '<a href="index.php?p=profile&country='.$country.'&province='.$province.'&club='.$club.'&player='.$row['id_zaw'].'&l='.$_SESSION['language'].'">'.$row['imie'].' '.$row['nazwisko'].'</a><br /><br />
  41. ';
  42. }
  43.  
  44. $query=mysql_query('SELECT * FROM zawodnik_pol WHERE id_klub='.$club.' AND rola like "z%" ORDER BY data_start ASC');
  45. while($row=mysql_fetch_array($query))
  46. {
  47. //[b]TUTAJ POWINO BYć TO Z POWYżSZEGO ZAPYTANIA[/b]
  48. echo '<a href="index.php?p=profile&country='.$country.'&province='.$province.'&club='.$club.'&player='.$row['id_zaw'].'&l='.$_SESSION['language'].'">'.$row['imie'].' '.$row['nazwisko'].'</a> '.$row['data_ur'].', '.$row['data_start'].' <br />
  49. ';
  50. }
  51. }
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.