Witam, mam problem z zapytaniem
mam dwie tabele:
- komunikaty (tutaj mam wszystki komunikaty)
idkom, tresckom, datakom, potwierdzeniekom
oraz
- potwierdzenia( tutaj zapisuję kto potwierdzil przeczytanie)
idpotw, datapotw, imie_nazwisko, idkom
chciałbym wyświetlić wszystkie komunikaty wymagające potwierdzenia, których jeszcze zalogowany user nie przeczytał. Robię to tak ale coś mi nie idzie...
SELECT * FROM komunikaty LEFT JOIN potwierdzenia ON komunikaty.idkom = potwierdzenia.idkom WHERE komunikaty.potwierdzeniekom = '1' AND (potwierdzenia.imie_nazwisko IS NULL )
Ale z tego zapytania wynika że wyświetlasz userów które maja puste pole
więc jak być powinno? przecież gdybym wiedział to nie zakładałbym wątku.
Ale po koleji
najpierw szukam czy są komunikaty z potwierdzeniem
select * from komunikaty where potwierdzenie = '1'
teraz muszę połączyć/sprawdzić czy ja jako zalogowany user już go czytałem czy też nie
select * from potwierdzenia where imie_nazwisko like 'MojeNazwisko' and idkom .....?
SELECT * FROM komunikaty LEFT JOIN potwierdzenia ON komunikaty.idkom = potwierdzenia.idkom WHERE komunikaty.potwierdzeniekom IS NULL
gdzie w tym zapytaniu kontroluję czy ja go już czytałem czy też nie?
dziwnie skonstruowana baza. Z Twoich tabel wynika, że to są jakieś ogólne komunikaty do wszystkich userów, a nie jakieś indywidualne. W takim razie po co kolumna "komunikaty.potwierdzenieko" wystarczy Ci aby ktokolwiek go potwierdził? Jeśli nie to kolumna jest do wywalenia. powinieneś mieć 3 tabele:
komunikaty: idkom, tresckom, datakom
users: id, imie, nazwisko
potwierdzenie: idkom, userID, datapotwierdzenia
OK na tym etapie mogę jeszcze wszystko przerobić.
Generalnie mam takie założenia:
- baza z komunikatami dla wszystkich, ale pewne z nich muszą posiadać potwierdzenie przeczytania - stąd tabela potwierdzeń, oczywiście baza z userami też jest i funkcjonuje
- admin daje jakiś komunikat i ustawia flagę na "ON" - że żąda przeczytania i lecimy dalej....
loguję się do systemu, pojawia mi się modal że mam nieprzeczytaną wiadomość, np zaznaczam chceckboxa, submit insert do bazy np
INSERT INTO potwierdzenia SET imie_nazwisko = '$imie_nazwisko', Idkom = '$id_kom', DataPotwierdzenia = NOW()
zamiast
imie_nazwisko = '$imie_nazwisko',
SELECT k.* FROM komunikaty k LEFT JOIN potwierdzenia p ON k.idkom=p.idkom AND p.userID=5 WHERE p.idkom IS NULL
dziękuję, dokładnie o to mi chodziło
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)