![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 6 Dołączył: 9.04.2007 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Hej,
mam do napisania dość spore zapytanie do bazy, które ma za zadanie pobierać listę restauracji (pobiera listę, z innej tabeli średnią ocen - to niby działa). Ostatnio przyszła potrzeba dodania sortowania i pobierania po tagach/filtrowania. Tu jest problem bo nie chce działać, czy mógłby ktoś poradzić jak to naprawić? Działa jeśli zamiast AND przy tagach dam OR ale przecież nie o to chodzi - chcę tylko restauracje które zawierają wszystkie podane tagi. Poniżej wklejam zapytanie SQL/kod w ZF/schemat bazy. Przy okazji, count(t.id) zwraca ilość wszystkich tagów przypisanych do wszystkich rekordów, też nie wiem czemu.
Tabele: tags: id, tag tagged_restaurants: id, restaurant_id, tag_id restaurants: id, name, address (w sumie tylko te są ważne) rate: id, rid (id restauracji), rank (ocena) Proszę o pomoc ![]() Ten post edytował Vielta 4.10.2011, 16:18:58 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
Having count( distinct t.id) =2 to da Ci tylko wynik tam gdzie sa dwa unikalne tagi, jak w WHERE dasz trzy tagi to tu tez musisz dac trzy *distinct po to by nie wiem czy dane przy joinach CI sie nie dubluja. Co wskazuje twoja zmienna tag_count?? czy ma wartosc 2 czy inna? musi byc OR w WHERE bo t.tag w jednej chwili nie moze miec 2 wartosci:) * to jest zupelnie nieoptymalizowane zapytanie ale podalem Ci naprowadzenie Ten post edytował maly_swd 5.10.2011, 09:42:47 -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 08:29 |