Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Group BY, ale pobierając dane z wiersza o wyższej wartości
Forum PHP.pl > Forum > Bazy danych > MySQL
llukasz
Witam

Mam tabelę, w której znajdują się rekordy z powtórzonymi ID ale innymi parametrami NUMER i jakimiś innymi wartościami które chcę pobrać

Chcę pobrać te inne wartości, tylko raz dla każdego ID, ale klucz ma być taki, że NUMER musi wynosić 1 lub 2 a jeśli obie wartości istnieją to chcę pobrać ten rekord z większą wartością czyli 2.


Jak to wykonać?


przyklad

id , numer , cos-tam
1 , 1 , y
1 , 2 , u
1 , 3 , i

z tego powinno wyrzucic mi 'u'

id , numer , cos-tam
1 , 1 , y
1 , 3 , i

z tego 'y'

id , numer , cos-tam
1 2 , u
1 , 3 , i

z tego 'u'
wojckr
Możliwe, że to zadziała, ale może nie być szybkie:
  1. SELECT * FROM
  2. (SELECT *
  3. FROM tabela
  4. WHERE (numer=1 OR numer=2)
  5. ORDER BY numer DESC)
  6. AS tymczasowa
  7. GROUP BY tymczasowa.id


Np. takie zapytanie:
  1. SELECT CONCAT(id,numer) AS klucz FROM tabela

da coś na kształt unikalnego klucza, może być pomocne.
Mchl
Kod
SELECT
  costam
FROM
  tabela AS t
CROSS JOIN (
  SELECT
    ID, MAX(numer) AS numer
  FROM
    tabela
  WHERE
    numer IN (1,2)
  GROUP BY
    ID
) AS sq
USING(ID,numer
)
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.