Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pomocy z zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
john_doe
Witam,

mam dwie tabele
-kategorie
-produkty

kategorie
1 ; kat1
2 ; kat2
3 ; kat3

produkty
1 ; zdjęcie1 ; 1
2 ; zdjęcie2 ; 1
3 ; zdjęcie3 ; 1
4 ; zdjęcie1 ; 2
5 ; zdjęcie2 ; 2
6 ; zdjęcie3 ; 2
7 ; zdjęcie1 ; 3
8 ; zdjęcie2 ; 3
9 ; zdjęcie3 ; 3

tabele łączą się category.category_id = products.category_id

jak teraz jednym zapytaniem wyświetlić
nazwa kategori ; zdjęcie

ale tylko dwa produkty questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?


Mchl
Co to znaczy 'tylko dwa produkty'?
john_doe
żeby zwrócić po dwa produkty w każdej kategorii.
Mchl
Dowolne dwa, losowe dwa, pierwsze dwa, inne dwa?
john_doe
smile.gif powiedzmy, że 1sze dwa
Mchl
Teraz jeszcze powinienem zapytać 'pierwsze wg jakiego kryterium?' tongue.gif

No ale spróbójmy na przykład tak o:

Kod
SELECT
  c.categoryName,
  p1.product_id,
  p2.product_id
FROM
  category AS c
CROSS JOIN(
  SELECT
    category_id,
    product_id
  FROM
    products
) AS p1
USING (category_id)
CROSS JOIN(
   SELECT
     category_id,
    product_id
   FROM
     products
) AS p2
USING (category_id)
WHERE
  p1.product_id != p2.product_id
GROUP BY
  c.category_id


Jest tutaj miejsce jeszcze dla optymalizacji, bo przy większej ilości produktów to może zrobić się...hmm.. wolne tongue.gif
john_doe
nieźle to rozpykałeś. ale jak np dodam kategorie i produkty w niej to już nie działa. Nie pobiera tej nowo dodanej chyba że cos skopałem.
Jak to przerobić na 4 produkty smile.gif ?
Mchl
Trzeba by dodawać kolejne joiny i będzie toto coraz wolniejsze... Musiałbym coś innego wykombinować.
john_doe
to by musiało być coś takiego żeby zwracało dobrze gdy dodam nową kat a w niej produkty, nie dwa a cztery <- sorki.

ale tamto wypas wykombinowałeś mimo iż nie kosi dobrze smile.gifsmile.gif
szacun
Mchl
Akurat dodanie nowej kategorii nie powinno nic przeszkadzać. Rzuca jakimś błędem, czy po prostu nie ciągnie tego co potrzeba?
john_doe
poprostu nie ciągnie jej
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.