Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 15.05.2007 Ostrzeżenie: (0%)
|
Witam.
Mam takie nieco chaotyczne zapytanie:
Na język ludzki chodzi o to: Mam pole z newsem, przypisanym do jakiejś kategorii, najpierw sprawdzam czy w ogóle news ma być publikowany (opcje aktywny, glowna i archiwum) jak tak patrzę czy kategoria do której jest przypisany ma opcję aktywny uruchomioną (jeśli nie został przypisany do kategorii na tym sprawdzanie się kończy), gdy ma patrzę czy kategoria nadrzędna jest aktywna, i na tym ten łańcuch się kończy, chce pobrać wszystkie newsy spełniające te kryteria, a także wszystkie opcje kategorii (jeśli przypisano) i kategorii nadrzędnej (też jeśli przypisano) każdego newsa żeby jeszcze inne opcje później z nich wykorzystać... Jego wynik jest taki (w bazie jest zapisany akurat tylko jeden rekord spełniający kryteria): CODE Array ( [0] => Array ( [id] => 6 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria3 [aktywna] => 1 ) [1] => Array ( [id] => 6 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria3 [aktywna] => 1 ) [2] => Array ( [id] => 6 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria3 [aktywna] => 1 ) [3] => Array ( [id] => 6 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria3 [aktywna] => 1 ) [4] => Array ( [id] => 4 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria1 [aktywna] => 1 ) [5] => Array ( [id] => 4 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria1 [aktywna] => 1 ) [6] => Array ( [id] => 4 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria1 [aktywna] => 1 ) [7] => Array ( [id] => 4 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 0 [archiwum] => 0 [nazwa] => Kategoria1 [aktywna] => 1 ) [8] => Array ( [id] => 7 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria2 [aktywna] => 1 ) [9] => Array ( [id] => 7 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria2 [aktywna] => 1 ) [10] => Array ( [id] => 7 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria2 [aktywna] => 1 ) [11] => Array ( [id] => 7 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria2 [aktywna] => 1 ) [12] => Array ( [id] => 8 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria4 [aktywna] => 1 ) [13] => Array ( [id] => 8 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria4 [aktywna] => 1 ) [14] => Array ( [id] => 8 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria4 [aktywna] => 1 ) [15] => Array ( [id] => 8 [tytul] => News 1 [data] => 25-01-2009 [autor] => Admin [tresc] => TREŚĆ [skrot] => SKRÓT [glowna] => 1 [aktywny] => 1 [data_w] => 1 [tytul_w] => 1 [autor_w] => 1 [tytul_link] => 1 [kategoria] => 4 [archiwum] => 0 [nazwa] => Kategoria4 [aktywna] => 1 ) ) I problem: jak widać w wyniku to co mi jest potrzebne (wartości n. k. i k1. spełniające kryteria) są powielone wielokrotnie, a chcę je tylko raz, nie wiem co źle zrobiłem w tym zapytaniu... Ten post edytował llukasz 28.01.2009, 12:58:52 |
|
|
|
![]() |
Post
#2
|
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź |
Cytat Mam takie nieco chaotyczne zapytanie: Nieco to delikatnie powiedziane. Poczytaj o złączeniach (JOIN), wtedy na pewno uprościsz sobie to zapytanie. Wg. mnie: 1. Masz tak skonstruowany warunek, że jest prawdziwy jeszcze dla kilku innych rekordów. albo: 2. Jesli jesteś w 100% prawidłowości zapytania, zrób sobie GROUP BY newsy.id |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 15.05.2007 Ostrzeżenie: (0%)
|
Jeśli chodzi o JOIN, próbowałem, efekt był identyczny (przynajmniej na pierwszy rzut oka, wszystko powielone). Spróbuję te group.
EDIT Zadziałało GROUP BY, dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) przyda się bo mój umysł wytworzył takich chaotycznych zapytań więcej pozdrawiam serdecznie Ten post edytował llukasz 28.01.2009, 14:21:40 |
|
|
|
![]() ![]() |
|
Aktualny czas: 19.12.2025 - 05:49 |