![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Spotkałem się z problemem stronicowania przy łączeniu kilku tabel. Załóżmy że mam tabelę artykułów, ich kategorii i trzecią w której składuje identyfikatory artykułów i kategorii celem powiązania ich ze sobą. W zapytaniu łączę tabele ( LEFT JOIN ) co w przypadku dwóch kategorii przypisanych do jednego artykułu zwróci mi dwa wyniki opisujące jeden artykuł. Co mam zrobić w takim razie jeśli chcę pobrać tylko 5 artykułów? Jeśli wpiszę LIMIT 5 artykuł z dwiema kategoriami zwróci mi dwa wiersze wyników i tak na prawdę tylko 4 artykuły zostaną pobrane. Czy można wprowadzić limit na kolumnę ? Na przykład: Pobierz dane z tabeli artykuły łącząc z tabelą łącznik gdzie art.id = łącznik.art_id i połącz z kategorie gdzie cat.id = łącznik.cat_id WHERE art.id 5 unikalnych - zamiast LIMIT 5 edit> Moje wyjaśnienie pewnie guzik daje więc wrzucam bazę i zapytanie Zapytanie:
Dostanę wynik: Cytat +-------+----------+---------+- Czyli zamiast 5 wyników dostaję 3 wyniki. Winowajcą jest LIMIT który zlicza mi wiersze zamiast unikalnych wystąpień na przykład al_id. Jak zmusić zapytanie do pobierania wyników o 5 unikalnych identyfikatorach a nie 5 wierszach.
| al_id | al_title | al_desc | +-------+----------+---------+- | 1 | Tytul 1 | Opis 1 | | 1 | Tytul 1 | Opis 1 | | 2 | Tytul 2 | Opis 2 | | 2 | Tytul 2 | Opis 2 | | 3 | Tytul 3 | Opis 3 | +-------+----------+---------+- Ten post edytował orglee 24.09.2008, 05:16:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 3 Dołączył: 27.07.2007 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Można użyć GROUP BY, ale nie wiem czy takie zapytanie będzie zwracało to o ci chodzi.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 08:20 |