Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z distinct
Forum PHP.pl > Forum > Przedszkole
phpcoder89
mam taka tabele:

  1. CREATE TABLE `spolki` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `indeks` varchar(32) NOT NULL,
  4. `nazwa` varchar(32) NOT NULL,
  5. `wartosc` varchar(32) NOT NULL,
  6. `czas` varchar(32) NOT NULL,
  7. PRIMARY KEY (`id`)
  8. )


i teraz jak wyciagnac wszystkie unikalne rekordy (unikalne wartosci z pola nazwa) rekordy gdzie pole indeks = powiedzmy 'wig20' i przesortowac to po id DESC??

pomocy
webdice
  1. SELECT DISTINCT(`nazwa`), `id`, `indeks`, `wartosc`, `czas` FROM `spolki` WHERE `indeks` = 'wig20'


P.S. To są podstawy, przenoszę do działu Przedszkole.
phpcoder89
ale w tym momencie wyciagnie mi rekord o nizszym id a ja chce wyciagnac o id jak najwyzszym
webdice
To sobie dodaj:

  1. ORDER BY `id` DESC
phpcoder89
nie dziala sad.gif
kefirek
To zobacz może tak

  1. SELECT * FROM spolki GROUP BY nazwa ORDER BY id DESC;
webdice
Cytat(phpcoder89 @ 29.12.2008, 16:45:26 ) *
nie dziala sad.gif


To usiądź i płacz, jaki błąd Ci wyskakuje? Dodaj:

  1. <?php
  2. or die (mysql_error ());
  3. ?>
phpcoder89
Cytat(webdice @ 29.12.2008, 15:52:50 ) *
  1. SELECT DISTINCT(`nazwa`), `id`, `indeks`, `wartosc`, `czas` FROM `spolki` WHERE `indeks` = 'wig20'


P.S. To są podstawy, przenoszę do działu Przedszkole.


nie pokazuje mi unikalnych dla nazwy tylko wszystkie dla `indeks` = 'wig20'
:/
kefirek
To zobacz tak
  1. SELECT * FROM spolki GROUP BY nazwa WHERE indeks = 'wig20' ORDER BY id DESC;
phpcoder89
niby ok wyciaga unikalne nazwy ale sortuje po id juz po wyciagnieciu tych unikalnych co mija sie z celem bo najpierw powinien posortowac a potem wyciagnac unikalne najnowsze a wyciaga unikalne najstarsze sad.gif
kefirek
TO usuń z zapytania DESC
phpcoder89
to tez nic nie da. poprostu order sortuje wyniki ktore juz sa wyselekcjonowane przez group by. chodzi o to zeby najpierw posortowal od najnowszych a potem sobie wyselekcjonowal unikalne z tych najnowszych
kefirek
A tak
  1. SELECT DISTINCT(nazwa) FROM spolki WHERE indeks = 'wig20' ORDER BY id DESC;


U mnie dziala
phpcoder89
Cytat(kefirek @ 30.12.2008, 11:42:53 ) *
A tak
  1. SELECT DISTINCT(nazwa) FROM spolki WHERE indeks = 'wig20' ORDER BY id DESC;


U mnie dziala


no ok ale to mi wyciagnie same nazwy a ja chce tez wartosci...

Cytat(webdice @ 29.12.2008, 15:52:50 ) *
P.S. To są podstawy, przenoszę do działu Przedszkole.


skora sa to podstawy to dlaczego nikt od wczoraj nie potrafi mi pomoc?

?
GrayHat
  1. SELECT *
  2. FROM spolki WHERE (
  3. id
  4. IN (
  5. SELECT max( id )
  6. FROM spolki WHERE indeks = 'wig20'
  7. GROUP BY nazwa
  8. )
  9. )
phpcoder89
Cytat(GrayHat @ 30.12.2008, 12:51:29 ) *
  1. SELECT *
  2. FROM spolki WHERE (
  3. id
  4. IN (
  5. SELECT max( id )
  6. FROM spolki WHERE indeks = 'wig20'
  7. GROUP BY nazwa
  8. )
  9. )


Dziala biggrin.gif tylko wolno :/ pierwszy raz sie wykonuje 2sekundy... nie wiecie czemu?
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.