Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Group BY, ale pobierając dane z wiersza o wyższej wartości
llukasz
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 15.05.2007

Ostrzeżenie: (0%)
-----


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'

Ten post edytował llukasz 8.04.2010, 22:22:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
wojckr
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował wojckr 9.04.2010, 10:33:32
Go to the top of the page
+Quote Post
Mchl
post
Post #3





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


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
)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 16:22