Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] pobieranie z 3 tabel
Polidiota
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.11.2008

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


Witam,

Mamy trzy tabele:  Groups(id,name), Products(id,prod_name,group_id) PromoGroups(id, group_id)

Do tabli PromoGroups zapisujemy grupy które są w promocji, następmnie z czym mam problem: Potrzebuje pobrać 3 losowe rekordy z tabeli PromoGroups, następnie, trzy rekordy z Groups gdzie  id = group_id, następnie 4rekordy z products gdzie group_id = Groups.id. Chodzi o to żeby na stronie głównej wyświetlane były 3 grupy promocyjne towarów.

Prosze o wszelkie sugestie jak Wy byście to rozwiązali.

Z góry dziękuję za podpowiedzi.

Ten post edytował Polidiota 20.01.2009, 11:21:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
EarthCitizen
post
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


No nie do końca...
bo z każdej grupy ma być po 4 produkty o ile dobrze zrozumiałem i 3 różnych grup, tak? A te zapytanie (nie testowałem) ale chyba zwróci 3 po prostu losowe rekordy wyniku złączenia, nie koniecznie z 3 różnymi grupami...

Co do łączenia to łączyłbym tylko PromoGroups i Groups....

  1. SELECT b.group_id, b.name
  2. FROM Promo_groups AS a
  3. LEFT JOIN Groups AS b ON a.group_id = b.group_id
  4. ORDER BY RAND() LIMIT 3


Ale to zapytanie też nie jest odporne na duplikaty, trzeba dodać GROUP BY group_id chyba...
Później wynik z tego dać do prostego zapytania

  1. SELECT * FROM products WHERE group_id IN(group_id1, group_id2) ORDER BY group_id

Te sortowanie na końcu jest potrzebne aby łatwiej było w pętli wypisać produkty z tych samych grup w kolejności...

P.S. po pracy sprawdzę te zapytanie i odpiszę, ale pewnie będzie do tej pory już gotowa odpowiedź...

Ten post edytował EarthCitizen 20.01.2009, 12:24:32
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 16.10.2025 - 05:19