MySQL wyswietlenie wszystkich postów z kategorii

Odpowiedz Nowy wątek
2016-12-06 18:47
Wielki Szczur123
0

Czesc próbuje za pomocą sql wyswietlic wszystkie posty ktore są w kategorii i mam tak:
tabela post:
id, apikey,title,tresc
tabela categoryPost
id, apikey, categoryID
tabela category
id nazwa kategorii

i na przyklad jak jeden post ma kilka kategorii to kilkukrotnie jest dodawany do tej samej tabeli tylko z innym numerem kategorii, problem polega na tym ze mam taki sql: i wyswietla on mi wszystkie posty a nie te ktore sa w tabeli kategori SELECT DISTINCT p.*
FROM Post p
INNER JOIN categoryPost cp
ON
cp.apikey = 59595(nr api) AND (cp.categoryID = 1 OR cp.categoryID = 2 OR cp.categoryID = 3 )

Pozostało 580 znaków

2016-12-06 19:20
0

Bo w warunku złączenia nie masz połączenia między post a categoryPost, czyli zwróci wszystkie posty bo każdy rekord pasuje do siebie, czyli masz cross joina...

zakładając, że apikey wyróżnia post, to zapytanie powinno być takie:

SELECT DISTINCT
    P.*
FROM
    Post p
    INNER JOIN categoryPost cp ON p.apikey=cp.apikey
WHERE
    cp.categoryID in (1,2,3)

Pozostało 580 znaków

2016-12-06 19:53
Wielki Szczur123
0

tylko ze w p mam api uzytkownika ktory dodal post, a tu mi zalezy zeby uzytkownikowi wyswietlac posty ktore kategorie wybral jako "ulubione"

Jak w Twojej bazie nie ma czegoś takiego, żeby przechowywał "ulubione". To skąd to ma wziąć z kosmosu ? - mariano901229 2016-12-06 20:18

Pozostało 580 znaków

2016-12-06 20:20
Wielki Szczur123
0

jak nie ma? baza danych categoryPost zapisuje apikey uzytkownika + id kategorii, napisalem wyraźnie w pierwszym poście,

Pozostało 580 znaków

2016-12-06 21:54
0

Kolego Wielki Szczur nic wyraźnie w pierwszym poście nie napisałeś, pokazałeś tylko jakie masz tabele nie opisując co jest co, ani jak się ze sobą łączą, dodatkowo zapytanie które wstawiłeś korzysta tylko z dwóch. W tabeli posts nie widzę pola które by przypisywało post do kategorii...

Ale szklanej kuli nie mam..

Strzelam ostatni raz, bo to strasznie męczące wydobywać informacje od osoby która oczekuje pomocy. Musisz zrozumieć, że masz tak opisać dane, żeby można je było zrozumieć.

SELECT DISTINCT
    P.*
FROM
    Post p
    INNER JOIN categoryPost cp ON p.categoryid=cp.categoryid and cp.apikey = 59595 and cp.categoryID IN (1,2,3)

Pozostało 580 znaków

2016-12-06 22:06
Wielki Szczur123
0

jest tak:
tabela posts, id postu(1,2,3 nr porzadkowy, apikey - uzytkownika ktory dodal, tytul, opis)
tabela category - id (1,2,3,4 nr porzadkowy) i nazwa kategorii
categoryPosts - id (nr porzadkowy 1,2,3,4,5,6) apikey (uzytkownika do ktorego maja byc wyswietlone posty) i nr kategori

Pozostało 580 znaków

2016-12-06 22:11
0

to teraz mi powiedz skąd mam wiedzieć w jakiej kategori jest post bazując tylko na tabeli posts?
Jak rozumiem z opisu categoryPosts przechowuje informacje o tym z jakiej katogori (categoryID) użtkownik(apikey) chce przeglądać posty?

Pozostało 580 znaków

2016-12-07 08:48
Wielki Szczur123
0

tak, categoryposts przechowuje jaki uzytkownik jakie kategorie ma, czy jak to lepiej zrobic?

Pozostało 580 znaków

2016-12-07 09:09
0

Nie odpowiedziałeś na pierwsze pytanie.

Skoro kategorie, które chcesz wyświetlić masz w categoryposts to po co w ogóle masz je filtrowane w warunku złączenia ON?

Pozostało 580 znaków

2016-12-07 10:32
Wielki Szczur123
0

nie wiedzialem wlasnie jak to rozwiązać, wysylam apikey i chce dostac wszystkie posty ktore pasuja do kategorii uzytkownika

Pozostało 580 znaków

2016-12-07 15:32
0

Ponawiam pytanie:
skąd mam wiedzieć w jakiej kategori jest post bazując tylko na tabeli posts?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0