Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z relacją w WHERE
Forum PHP.pl > Forum > Bazy danych
Andrzej20
Hej,

Mam 2 tabele smile.gif W tabeli `xPosts` mam pole `id`, w tabeli `xCategories` mam pole `category_id`. Robiłem sobie zapytanie, które zliczało mi ilość takich rekordów w tabeli `xPosts`, które w polu `category_id` zawierały odpowiedniego id-ka z pola `id` w tabeli `xCategories`. Poniższe zapytanie powinno wyjaśnić to udało mi się zrobić:

  1. SELECT COUNT(xPosts.id) FROM xPosts WHERE xCategories.id = xPosts.category_id;


Super, działa! Problem w tym, że z pewnych przyczyn musiałem zmienić nieco sposób przetrzymywania id-ków w polu `xPosts.category_id` i teraz nie są to pojedyncze liczby, ale string w formacie "1,13,54,[...]". No i w tym momencie mam problem, którego nie potrafię rozwiązać, ponieważ oczywiście relacja przestała działać. Próbowałem zmodyfikować zapytanie, ale nie działa:

  1. SELECT COUNT(xPosts.id) FROM xPosts WHERE xCategories.id LIKE "%xPosts.category_id%";


Jak zbudować ten warunek, aby przeszukiwał stringa w polu `xPosts.category_id` w poszukiwaniu zadanych `id` z tabeli `xCaterogies`?

Tak, jestem SQLowym leszczem. Czy mimo to mogę liczyć na Waszą pomoc? smile.gif

Pozdrowienia
Andrzej
blooregard
Cytat
Super, działa! Problem w tym, że z pewnych przyczyn musiałem zmienić nieco sposób przetrzymywania id-ków w polu `xPosts.category_id` i teraz nie są to pojedyncze liczby, ale string w formacie "1,13,54,[...]". No i w tym momencie mam problem, którego nie potrafię rozwiązać, ponieważ oczywiście relacja przestała działać.

I to był błąd, bo powinieneś dodać dodatkową tabelę, w której mógłbyś tworzyć relacje xPost.id -> xCategory.category_id, bo rozumiem, że problem polegał na tym, że jedno coś tam z tabeli xPosts mogło należeć do więcej niż jednej kategorii, tak?

Zamiast kombinować z tworami w stylu listy kategorii rozdzielonej przecinkami, lepiej dodaj sobie tę tabele pośrednią.

Cytat
Tak, jestem SQLowym leszczem. Czy mimo to mogę liczyć na Waszą pomoc?

Dlaczego wszyscy początkujący na tym forum, jak mają jakieś problemy i piszą pierwsze posty, jadą z takimi tekstami: "Wiem, jestem cienki" , "Tak, wiem, nic nie umiem" i podobne... Macie jakieś kompleksy czy jak?

Qrde, nikt nie urodził się jako guru PHP.
gutek84
do takiej struktury jaka stworzyles zamiast

  1. xCat.id = xPost.cat_id

mozna dac

  1. xCat.id IN (xPost.cat_id)


pod warunkiem ze pole xPost.cat_id wyglada tak: 1,2,3...n
Andrzej20
Cytat(gutek84 @ 11.08.2009, 15:29:05 ) *
  1. xCat.id IN (xPost.cat_id)



Niestety, nic to nie daje sad.gif Struktura pola jest taka jak napisałeś, tzn 1,2,3, itd, ale nie wiedzieć czemu zliczane są tylko pierwsze wartości, tzn np dla pola "6,13,7,8" brana jest pod uwagę tylko 6-tka, nie wiem w czym problem :/
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.