![]() ![]() |
| -gregory32- |
Post
#1
|
|
Goście |
Buduję właśnie wiadomości przesyłane między użytkownikami. Mam w mysql tabelę, w której mam kolumny: nadawca, odbiorca, treść. Aktualnie mam takie zapytanie do bazy:
select nadawca, odbiorca, tresc from `messages` where nadawca="$zalogowanyuzytkownik" union select nadawca, odbiorca, tresc from `messages` where odbiorca="$zalogowanyuzytkownik" I wyświetla mi wszystkie rekordy, w których nadawcą lub odbiorcą jest $zalogowanyuzytkownik. Jak zmodyfikowac to zapytanie, by wyświetlało mi po jednym rekordzie gdzie nadawcą lub odbiorcą jest $zalogowanyuzytkownik? Może wyjaśnię to na przykładzie: w tabeli mam: $zalogowanyuzytkownik, $innyuzytkownik1, $jakastresc1 $innyuzytkownik1, $zalogowanyuzytkownik, $jakastresc2 $innyuzytkownik2, $zalogowanyuzytkownik, $jakastresc3 $zalogowanyuzytkownik, $innyuzytkownik2, $jakastresc4 $zalogowanyuzytkownik, $innyuzytkownik3, $jakastresc5 $innyuzytkownik3, $zalogowanyuzytkownik, $jakastresc6 i chciałbym, by zapytanie wyświetliło mi tylko $zalogowanyuzytkownik, $innyuzytkownik1, $jakastresc1 $innyuzytkownik2, $zalogowanyuzytkownik, $jakastresc3 $innyuzytkownik3, $zalogowanyuzytkownik, $jakastresc6 czyli po jednym rekordzie, gdzie występuje $zalogowanyuzytkownik i $innyuzytkownik. Ktoś pomoże? |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%)
|
Kiepsko to wyjaśniłeś, bo nie mam zielonego pojęcia o co Ci chodzi. Piszesz o jednym rekordzie, a w przykładzie podajesz 3 rekordy.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 19 Dołączył: 31.05.2013 Ostrzeżenie: (0%)
|
Zacznijmy od początku.
Masz tabelę z id, sender, receiver, text, is_sender Do bazy danych przy wysyłaniu wiadomości dodajedsz dwa rekordy. Różnią się od siebie tym że jedno w polu is_sender ma 0 a drugie 1. dla odebranych wiadomości robisz tak select * from tabela where receiver=$sesja and is_sender = 0 dla wysłanych wiadomości select * from tabela where sender=$sesja and is_sender = 1 |
|
|
|
| -gregory32- |
Post
#4
|
|
Goście |
Załączę screena:
(IMG:http://pics.tinypic.pl/i/00401/w1cehciv4kry.png) chciałbym, by pobrało mi wszystkie rekordy gdzie wystepuje zalogowanyuzytkownik, niewazne czy nadawca czy odbiorca. i chciałbym, by drugie pole (odbiorca lub nadawca), było, nie wiem jak to ujac, niepowtarzalne, tzn by w przypadku tego zapytania pobralo mi rekordy o id 52, 51, 49, 46. id 50 odpada, ponieważ w id 52 już wystapil innyuzytkownik3, id 48 odpada, ponieważ w id 52 już wystapil innyuzytkownik2, id 47 odpada, ponieważ w id 52 już wystapil innyuzytkownik2 itd.. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%)
|
|
|
|
|
| -gregory32- |
Post
#6
|
|
Goście |
albo ujmę to jeszcze inaczej, chciałbym, by wyświetliło mi każdego użytkownika, z którym wymienial wiadomosci zalogowanyuzytkownik (nieważne czy nadawca czy odbiorca). I chodzi o to, zeby gdy wyswietli mi, ze nadawcą jest jakisuzytkownik1 a odbiorcą jest zalogowanyuzytkownik, to by nie wyświetlało już dalszych rekordów gdzie nadawcą jest jakisuzytkownik1 a odbiorcą jest zalogowanyuzytkownik lub nadawcą jest zalogowanyuzytkownik a odbiorcą jest jakisuzytkownik1.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%)
|
albo ujmę to jeszcze inaczej, chciałbym, by wyświetliło mi każdego użytkownika, z którym wymienial wiadomosci zalogowanyuzytkownik (nieważne czy nadawca czy odbiorca). I chodzi o to, zeby gdy wyswietli mi, ze nadawcą jest jakisuzytkownik1 a odbiorcą jest zalogowanyuzytkownik, to by nie wyświetlało już dalszych rekordów gdzie nadawcą jest jakisuzytkownik1 a odbiorcą jest zalogowanyuzytkownik lub nadawcą jest zalogowanyuzytkownik a odbiorcą jest jakisuzytkownik1. Tak na marginesie nie jest potrzebny tutaj UNION SELECT, a jedynie dodatkowy warunek:
Ten post edytował b4rt3kk 14.06.2013, 11:03:24 |
|
|
|
| -gregory32- |
Post
#8
|
|
Goście |
Tak na marginesie nie jest potrzebny tutaj UNION SELECT, a jedynie dodatkowy warunek:
(IMG:http://pics.tinypic.pl/i/00401/8ibuw27xeziq.png) nie pasuje mi to, bo na przykład jeśli wyświetla mi innyuzytkownik1, zalogowany uzytkownik, to juz zalogowany uzytkownik, innyuzytkownik1 nie powinno wyświetlać.. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%)
|
Masz błąd w opisie.
48 nie odpada - w 53 jest zalogowanyuzytkownik3 A zapytanie powinno wygladac mniej więcej tak:
Dlatego takie skomplikowane, gdyż MySQL nie posiada EXCEPT (IMG:style_emoticons/default/smile.gif) |
|
|
|
| -gregory32- |
Post
#10
|
|
Goście |
Masz błąd w opisie. rzeczywiście jest błąd w opisie, powinno być id 48 odpada, ponieważ w id 49 już wystapil innyuzytkownik2, id 47 odpada, ponieważ w id 49 już wystapil innyuzytkownik2 SELECT DISTINCT t1.nadawca, t1.odbiorca FROM tabela t1 LEFT JOIN tabela t2 ON t1.id>t2.id AND t2.nadawca=t1.odbiorca WHERE t2.id IS NOT NULL możesz mi to wyjaśnić nieco bardziej szczegółowo, co pod co mam podstawić i co to jest t1 i t2? |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%)
|
|
|
|
|
| -gregory32- |
Post
#12
|
|
Goście |
przykro mi, nie działa tak jak bym chciał.. (IMG:http://pics.tinypic.pl/i/00401/063lm6ij5cus.png) pierwsza linijka powinna wykluczyć piątą, a druga szóstą.. |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%)
|
Kurde, za grosz inwencji.
zamień = na IN. Niestety, musisz sam rozkminić na jaki IN |
|
|
|
| -gregory32- |
Post
#14
|
|
Goście |
Kurde, za grosz inwencji. zamień = na IN. Niestety, musisz sam rozkminić na jaki IN żaden grosz inwencji tylko po prostu nie rozumiem.. pierwszy raz sie z takim skomplikowanym zapytaniem spotykam, gdy proszę o wyjaśnienie o co chodzi, to otrzymuję gotowca z podstawionymi rzeczami. i jak mam mieć swoją inwencję, skoro dostaję gotowce? (IMG:style_emoticons/default/smile.gif) |
|
|
|
| -gregory32- |
Post
#15
|
|
Goście |
poza tym nadal wyświetla mi wszystkie rekordy, a ja chcę zdefiniować $zalogowanyuzytkownik jako cos okreslonego.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 19:46 |