Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klopotliwe zapytanie do bazy
Forum PHP.pl > Forum > Bazy danych
mega
sytuacja :
mamy tabele X z 3 komorkami : id_y, txt i liczba.

teraz wyciagmy z tabeli wszystkie rekordy w ktorych wartosc komorki "liczba"jest wieksza jak 100 :
Kod
$zapytanie = "SELECT * FROM X WHERE liczba > 100";

powiedzmy ze w wyniku tego otrzymalismy 10 rekordow gdzie np. dla 3 z tych rekordow wartosc komorki "id_y" jest taka sama.

teraz pytanie :
jak ulozyc zapytanie do bazy aby w momencie gdy wartosc komorki tak jak w tym przypadku komorki "id_y" sie powtarza wyciagnac jedynie jeden wiersz z najwyzsza wartoscia komorki "liczba"? czego wynikiem w tym przykladzie byloby 8 a nie 10 wierszy.


pozdr.
DeyV
  1. SELECT
  2. id_y, txt , MAX( liczba )
  3. FROM X WHERE liczba > 100
  4. GROUP BY id_y


// ps. jak masz problem z zapytaniem SQL, wklejaj tylko zapytanie, i używaj poprawnego bbCode
mega
wlasnie probowalem to juz wczesniej wykonac w podobny sposob lecz rowniez bez rezulatu, w momenie gdy podaje ow MAX(liczba) nie wyciaga mi zadnych rekordow.
Dane wyciagane sa z dwoch tabel. Pokaze moze kod nie przykladowy ale ten na ktorym bazuje :

  1. $zapytanie = "SELECT tabela1.id_x,
  2. tabela1.txt,
  3. tabela2.id_y
  4. FROM tabela1, tabela2 WHERE tabela2.liczba > 100 and tabela1.id_x = tabela2.id_y";


robiac to w powyzszy sposob wyciagam te wpisy, ktore mnie interesuja lecz, dla czesci z nich "id_x" ma identyczna wartosc, w takiej sytuacji potrzebny mi jest ten z najwyzsza wartoscia "tabela2.liczba"
sf
Musisz użyć max :-) Jak Ci nic nie zwraca to sprawdź błąd... W postgresql z tego co pamiętam trzeba podać przy GROUP BY wszystkie pola, które podaliśmy przy SELECT bo inaczej się buntował ;-)

Najlepiej sprawdź sobie to zapytanie bezpośrednie w bazie danych, a nie przez php, szybciej się wtedy pracuje i tworzy odpowiednie zapytanie.
mega
Cytat
Jak Ci nic nie zwraca to sprawdź błąd

bledu jako takiego nie pokazuje, poprostu nie wyswietla rekordow.
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.