Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] pobranie rekordu bez powtórzeń
Forum PHP.pl > Forum > Bazy danych > MySQL
Dziadzia
Witam.

Tworzę menu które wypisuje pozycje z bazy danych. W tabeli produkty mam wypisane jakieś produkty z wartościami
Rodzaj: Liściaste, Iglaste
Wielkość: Niskie, Duże

Z każdego rodzaju oraz wielkości mam po kilka rekordów. W tabeli wygląda to tak:
Iglaste
Iglaste
Iglaste
Iglaste
Liściaste
Liściaste
itd...

Teraz zrobiłem wypisywanie rekordu ale jak dam aby wypisał w drugim miejscu ten rekord wypisuje tak jak w poprzednim iglaste zamiast drugi rodzaj liściaste. Chodzi tutaj tylko o powtórzenia, żeby wypisał mi bez powtórzeń. Jak to zrobić? Co dodać do SELECT? Mój SELECT wygląda tak:

"SELECT `Rodzaj`,`Wielkosc` FROM `produkty` "

Z góry dzięki.
phpion
DISTINCT - gdzie to umieścić pocztytaj tutaj.
Dziadzia
Zrobiłem tak:

$zapytanie = "SELECT DISTINCT `Rodzaj`,`Wielkosc` FROM `produkty` GROUP BY `Rodzaj`,`Wielkosc` ";

struktura w tabeli:
liściaste
liściaste
liściaste
iglaste
iglaste

wcześniej wypisało liściaste dwa raz (bo w dwóch miejscach ma wypisać) to teraz wypisało 2 razy iglaste...

czemu w jedno miejsce nie wpisze liściaste a w drugie miejsce iglaste?
phpion
Spróbuj tego:
  1. SELECT DISTINCT `Rodzaj` FROM `produkty`;
Dziadzia
Dalej nie działa ale zostawmy tamten problem, trochę źle go przedstawiłem. To jest kod który wypisuje rekordy z bazy danych:

$zapytanie = "SELECT DISTINCT `Id`,`Nazwa`,`Kolor`,`Rodzaj` FROM `produkty` GROUP BY `Id`,`Nazwa`,`Kolor`,`Rodzaj` ";
$idzapytania = mysql_query($zapytanie);

echo '<table>';
while ($wiersz = mysql_fetch_row($idzapytania))
{
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td></tr>';
}
echo '</table>';

działa, wypisuje ok. Tabela:

Rodzaj Wielkosc Id Nazwa Cena Kolor
Liściasty Niski 1 Rododendron 120 Czerwony
Liściasty Niski 2 Azalia 38 Biały
Liściasty Niski 3 Azalia 29 Żółty
Liściasty Niski 4 Rododendron 127 Różowy
Iglasty Karłowe 5 Barwinek 287 Czerwony
Iglasty Karłowy 6 Berberys 452 Granatowy


Teraz chcę aby wypisał tylko jeden rekord z rodzaju Liściasty i rodzaju Iglasty.
Może teraz lepiej zobrazowałem problem.

A próbowałem samo DISTINCT oraz z GROUP BY tak jak wyżej. oba nie działają.
phpion
  1. SELECT `Id`,`Nazwa`,`Kolor`,`Rodzaj` FROM `produkty` GROUP BY `Rodzaj`
Dziadzia
Jednak jest jeszcze jeden problem... Tym razem potrzebuję wypisać jeden rekord później coś zrobić i wypisać kolejny rekord z tej samej kolumny ale właśnie inny niż poprzedni.

robię coś takiego:

  1. $zapytanie = "SELECT DISTINCT `Rodzaj` FROM `produkty` GROUP BY `Rodzaj` ";
  2. $idzapytania = mysql_query($zapytanie);
  3. $wiersz = mysql_fetch_row($idzapytania);
  4.  
  5.  
  6. echo ( "<a href=\"cos.php\">" .$wiersz[0]. "</a>" );
  7. echo ( "<br /><a href=\"cos2.php\">" .$wiersz[0]. "</a>" );


W tym momencie wypisze mi 2 rekordy takie same pod sobą... Jak to zrobić aby były one różne? Co najlepsze moja tabelka ma taką kolejność:

liściasty
liściasty
liściasty
iglasty
iglasty
iglasty
pnącza
pnącza
pnącza

a rekordy jakie są wypisywane to: iglasty
iglasty

Nie mogę tego zrobić na pętli ponieważ oba rekordy muszą mieć inny adres w linku.

Jakieś propozycje? Z góry dziękuje smile.gif
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.