System powiadomień

0

Tworząc system powiadomień zamiast dodawać kolejną tabelę i powielać informacje postanowiłem wykorzystać istniejące tabele dodając kolumnę powiadomienia która przyjmuje wartość 0 (nie wyświetlone) lub 1 (wyświetlone).

login cos1 cos 2 powiadomienia
loczek111 abc def 0
login cos3 cos4 powiadomienia
loczek111 ghi jkl 0
loczek111 mno prs 0

Zatrzymałem się na zapytaniu do bazy, trochę wstyd przyznać że mnie przerosło coś co na pozór wydaje się niczym skomplikowanym, otóż chciałbym wybierać z obu tabel dane WHERE login = "loczek111" AND powiadomienia = 0. Wykorzystując LEFT JOIN największy problem mam z tym że tabele się mieszają, tzn w wyniku dostaje te rekordy lecz w takiej formie

login | cos1 | cos 2 | cos3 | cos4 | powiadomienia
-------- | --------- | ------ | -------------
loczek111 | abc | def | ghi | jkl | 0
loczek111 | abc | def | mno | prs | 0
A chciałbym aby akurat w tych wierszach cos1 i cos2 było puste/null (ponieważ dane są z drugiej tabeli), a tam gdzie jest wiersz z pierwszej tabeli aby cos3 i cos4 było puste/null. Da się osiągnąć mój wymarzony efekt w jednym zapytaniu czy lepiej rozbić je na osobne? (w swoim projekcie mam 4 tabele do przeszukania)

2

Aha czyli joinujesz po loginie i dziwisz się, że zjoinowało? Joinuj po polach, które odróżnią rekord z jednej i drugiej tabeli wtedy będziesz miał po jednej i drugiej stronie nulle, czyli to co chyba oczekujesz...

Poza tym spróbuj może z UNION? Z resztą ja nie rozumiem chyba co chcesz otrzymać...

0

A po co w ogóle dwie tabele do tego?

1
loczek111 napisał(a):

login | cos1 | cos 2 | cos3 | cos4 | powiadomienia
-------- | --------- | ------ | -------------
loczek111 | abc | def | ghi | jkl | 0
loczek111 | abc | def | mno | prs | 0
A chciałbym aby akurat w tych wierszach cos1 i cos2 było puste/null (ponieważ dane są z drugiej tabeli), a tam gdzie jest wiersz z pierwszej tabeli aby cos3 i cos4 było puste/null. Da się osiągnąć mój wymarzony efekt w jednym zapytaniu czy lepiej rozbić je na osobne? (w swoim projekcie mam 4 tabele do przeszukania)

Dać się da, ale mam przeczucie, że w projekcie bazy masz jakiegoś babola, jeśli taką gimnastykę trzeba uprawiać:)

select login, cos1, cos2, null, null, powiadomienia from tabela_1
union all
select login, null, null, cos3, cos4, powiadomienia from tabela_2

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