Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] unikalne wartosci z tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
wojtek22
mam taką strukture i dane

  1. CREATE TABLE IF NOT EXISTS `test` (
  2. `id` int(10) UNSIGNED NOT NULL,
  3. `numer` int(11) NOT NULL,
  4. `miesiac` int(11) NOT NULL,
  5. `imie` text COLLATE utf8_unicode_ci NOT NULL,
  6. `kolor` text COLLATE utf8_unicode_ci NOT NULL
  7. ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  8.  
  9. INSERT INTO `test` (`id`, `numer`, `miesiac`, `imie`, `kolor`) VALUES
  10. (1, 2, 201503, 'rober', 'czerwony'),
  11. (2, 6, 201504, 'tomek', 'pomaranczowy'),
  12. (3, 4, 201503, 'adam', 'czarny'),
  13. (4, 5, 201504, 'adam', 'czerwony'),
  14. (5, 3, 201503, 'tomek', 'zolty'),
  15. (6, 7, 201504, 'edyta', 'fioletowy'),
  16. (7, 8, 201505, 'adam', 'zielony'),
  17. (8, 1, 201503, 'adam', 'bialy');


jak napisac zapytanie zeby otrzymac taki wynik

  1. numer miesiac imie kolor
  2. 1 201503 adam bialy
  3. 2 201503 rober czerwony
  4. 3 201503 tomek zolty
  5. 7 201504 edyta fioletowy


chodzi o to aby zapytanie zwróciło tylko unikalne imiona wraz z wartosciami ktore byly przypisane
do pierszego numeru (kolumna numer w tabelce)

po edycji

zrobilem cos takiego,czy da sie to jakos optymalniej napisac
  1. SELECT `numer`,`miesiac`,`imie`,`kolor` FROM (SELECT `imie`,`numer`,`miesiac`,`kolor` FROM `test` ORDER BY numer) AS ww GROUP BY `imie` ORDER BY numer
darko
Jak pogrupujesz po numerze i użyjesz select distinct to nie działa ?
wojtek22
jesli masz na mysli cos takiego to nie do konca to dziala, ze wzgledu ze unikanosc w tym zapytaniu nie dotyczy tylko kolumny imie ale wszystkich kolumn razem
  1. SELECT DISTINCT numer, miesiac, imie, kolor FROM test ORDER BY numer


http://sqlfiddle.com/#!2/dac46f/3/0
DarkAbso
Możesz spróbować jeszcze tak:
  1. SELECT * FROM test WHERE numer IN (SELECT MIN(numer) FROM test GROUP BY imie)

Jest w bardziej przejrzysty sposób napisane, ale czy wydajniejsze? Raczej bym na to nie liczył. smile.gif
wojtek22
twoje tez dziala poprawnie
ale moje przy 450 tys rekordow wykonuje sie o prawie 2,5 sekundy szybciej
w kazdym badz razie dzieki za jakis inny pomysl
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.