Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem wyboru rekordu z najmniejsza wartoscia w kolumnie "pozycja" pogupowane po innej kolumnie "dzial"
Forum PHP.pl > Forum > Bazy danych > MySQL
morowiec
Witam!

Mam tabele z wpisami dla kazdej strony. Tabela sklada sie z nastepujacych kolumn:
- id
- pozycja (strony w dziale)
- dzial (id_dzialu)
- moderacja (czy strona ma byc widoczna czy nie)

Potrzebuje wybrac wpisy dla kazdego dzialu w ktorych pozycja jest najmniejsza a moderacja jest rowna 1.

Przykładowe dane:
id pozycja dzial moderacja
1 1 1 1
2 2 1 1
3 1 2 1
4 3 2 1
5 4 2 1
7 1 3 1
6 2 2 1
8 1 4 1
9 2 4 1
10 1 4 1
11 2 5 1
12 2 5 1
13 3 1 1
14 10 1 1
15 7 3 1
16 3 3 1
17 1 5 1
18 5 2 1
19 6 2 1
20 5 1 1
21 4 1 1
22 1 1 1
23 8 3 1
Ar2r
Spróbuj wykonać zapytanie:
SELECT MIN(pozycja) FROM xxxxx WHERE moderacja=1 GROUP BY dzial
morowiec
Dzieki za odpowiedz smile.gif Chodzi mi jednek o cos troche innego smile.gif To zapytanie poda mi jaka jest najmniejsza wartosc parametru pozycja. Ja potrzebuje wiedziec w ktorym rekordzie jest ta najmniejsza wartosc smile.gif I tu pojawia sie problem smile.gif Potrzebna jest modyfikacja zaptytania podobnego do:

CODE
SELECT id, MIN(pozycja), dzial FROM `morowiec_new_pages` GROUP BY dzial


Z tym ze efekt tego bedzie bledny... Jezeli dla danego dzialu (5) pierwszy rekord ma id = 11 i pozycje 2, drugi z danego dzialu ma id =17 i pozcyje 1 to dany wiersz bedzie wygladal:
11 | 1 | 5

CODE
SELECT id, dzial FROM morowiec_new_pages GROUP BY dzial HAVING MIN (pozycja)


To nie wyswietla nic...
Ar2r
Nie mam obecnie możliwości przetestowania. Spróbuj coś takiego:
CODE
SELECT id, dzial FROM morowiec_new_pages WHERE pozycja=MIN(pozycja) GROUP BY dzial
morowiec
CODE
zapytanie SQL:

SELECT id, dzial
FROM morowiec_new_pages
WHERE pozycja = MIN( pozycja )
GROUP BY dzial
LIMIT 0 , 30
MySQL zwrócił komunikat:

#1111 - Invalid use of group function


Baza danych to 4.0 niestety :/
Ar2r
Jeżeli używasz jakiegoś języka skryptowego zrób to w dwóch zapytaniach
CODE
SELECT MIN(pozycja) AS pozycja, dzial FROM morowiec_new_pages GROUP BY dzial

Potem w pętli:
CODE
SELECT id FROM morowiec_new_pages WHERE pozycja=$row['pozycja'] AND dzial=$row['dzial'] LIMIT 1
heaven
  1. SELECT *
  2. FROM (SELECT *
  3. FROM morowiec_new_pages m
  4. WHERE m.moderacja = 1
  5. ORDER BY m.dzial, m.pozycja) AS tab
  6. GROUP BY tab.dzial

powinno zadziałać
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.