Jak policzyć dane z dwóch tabel ?

0

Cześć! W tabeli post_like przechowuję id postów, oraz id użytkowników którzy dany post polubili, natomiast w tabeli post_dislike przechowuję id postów, oraz id użytkowników którym dany post się nie spodobał. Teraz chcę stworzyć zapytanie, które sprawi że jeśli użytkownik dany post nielubi, to nie może już go polubić. Moim zdaniem zapytanie powinno zwracać wartośc 1 jeśli post jest polubiony lub nie polubiony, oraz 0 jeśli nie jest polubiony oraz nie niepolubiony. Kompletnie nie wiem jak stworzyć takie zapyytanie, próbowałem użyć union all, ale to chyba nie tędy droga.
tableExample.PNG

4

Schemat bazy like/dislike do zaorania. Wsadź w jedną tabele, daj kolumnę czy to like czy dislike.

2

Osobiście bym nie projektował systemu od d**y strony no ale skoro tak chcesz, to ja bym trochę inaczej to zrobił.
Jedna tabelka do reputacji coś Ala post_reputation.
Kolumny: reputation_id, post_id, user_id, score.

Score by przyjmowało dwie wartosci: 1 i -1.

SELECT score from post_reputation WHERE user_id = xxx AND post_id = xxx zwróci Ci czy użytkownik oddał głos a jeżeli oddał to czy był to like czy dislike.

Na tej podstawie robisz sobie dalej co masz robić.

2

Czemu masz datę rozbitą na 2 kolumny? Weź to zapisuj w jednej jako datetime albo timestamp.

2

@veks21: Tak jak już pisano wcześniej - masz źle zorganizowaną bazę danych. Jeżeli jednak mimo wszystko się przy tym upierasz to rozwiązaniem może być coś takiego (pisane z pamięci):

SELECT u.name AS name, l.id AS like, d.id AS dislike FROM users
AS u LEFT JOIN likes AS l ON u.id = l.user_id LEFT JOIN dislikes AS d ON u.id = d.user_id
WHERE u.id = 1 AND (l.post_id = 1 OR d.post_id = 1)

Ponieważ JEDEN post może być tylko polubiony/niepolubiony to sprawdzaj czy jego ID występuje w bazie. Z powyższego zapytania wyciągasz sobie dane NAME, LIKE, DISLIKE.

0

musisz zrobic tabele
dicts w niej robisz pola group_symbol, symbol, public_name (i tam dajesz: post_reactions | post_like, Lubie | post_dislike, Nielubie)
users
posts
post_reactions i w tej ostatniej masz koumny post_id, user_id, reaction_type_symbol ( i tu dajesz ktory to post, ktory user i jaki typ reakcji wybral np symbol post_like. Jak zechcesz dodac reakcje usmiechnieta buzka to dodjesz do slownka do grupy post_reactions kolejny wpis i masz automatycznie dodana reakcje, mozesz dodac pole img i zamiast nazw reakcji bedziesz pokazywal obrazeczki, jak kciuki, oczka itd

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