Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skomplikowane zapytanie, Skomplikowane zapytanie, powiela wyniki
llukasz
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 15.05.2007

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


Witam.

Mam takie nieco chaotyczne zapytanie:

  1. SELECT n.*, k.*, k1.* FROM newsy n, newsy_kategorie k, newsy_kategorie k1 WHERE (n.aktywny=1 AND n.glowna=1 AND n.archiwum=0) AND (n.kategoria=0 OR ((k.id=n.kategoria AND k.aktywna=1) AND (k.kategoria=0 OR (k1.id=k.kategoria AND k1.aktywna=1))))


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
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: 20.12.2025 - 23:53