Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] pobranie rekordu bez powtórzeń
Dziadzia
post 15.10.2009, 14:00:02
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 4
Dołączył: 9.07.2009

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


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.

Ten post edytował Dziadzia 15.10.2009, 14:03:45
Go to the top of the page
+Quote Post
phpion
post 15.10.2009, 14:07:21
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




DISTINCT - gdzie to umieścić pocztytaj tutaj.
Go to the top of the page
+Quote Post
Dziadzia
post 15.10.2009, 14:22:47
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 4
Dołączył: 9.07.2009

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


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?

Ten post edytował Dziadzia 15.10.2009, 14:23:57
Go to the top of the page
+Quote Post
phpion
post 15.10.2009, 14:25:15
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Spróbuj tego:
  1. SELECT DISTINCT `Rodzaj` FROM `produkty`;
Go to the top of the page
+Quote Post
Dziadzia
post 15.10.2009, 14:44:44
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 4
Dołączył: 9.07.2009

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


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ą.

Ten post edytował Dziadzia 15.10.2009, 14:45:49
Go to the top of the page
+Quote Post
phpion
post 15.10.2009, 14:53:35
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. SELECT `Id`,`Nazwa`,`Kolor`,`Rodzaj` FROM `produkty` GROUP BY `Rodzaj`
Go to the top of the page
+Quote Post
Dziadzia
post 15.10.2009, 17:20:40
Post #7





Grupa: Zarejestrowani
Postów: 79
Pomógł: 4
Dołączył: 9.07.2009

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


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

Ten post edytował Dziadzia 15.10.2009, 17:33:07
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 1.05.2025 - 05:42