![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 59 Pomógł: 6 Dołączył: 28.10.2009 Skąd: że znowu... Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich
![]() Zasiedziałam się właśnie nad jednym problemem, z którym nie potrafię sobie poradzić, chodzi o wyciąganie danych z bazy. Tworzę w swoim nowym serwisie dział z aktywnością, działać ma w taki sposób że w momencie gdy dodaję zdjęcie zapisuje się moja aktywność w bazie danych, jeżeli ktoś obserwuje mnie, pojawi mu się ta aktywność. To samo tyczy się innych akcji i tutaj jest problem by połączyć wszystkie akcje w jednym zapytaniu i wyświetlać całą aktywność. Tak wygląda moja baza danych w chwili obecnej: ![]() Na obrazku zademonstrowałam jakie dane zapisywane są w bazie danych, kogo tam numer id się znajduje. ---------------------------- Na chwile obecną wyświetlam aktywność która skierowana jest od znajomych (czyli aktywności znajomych) takim zapytaniem : Kod SELECT activites.* FROM PROFILE_activites AS activites INNER JOIN PROFILE_friend AS friend ON activites.idFrom = friend.user WHERE friend.myId = '$id' ORDER by activites.addDate DESC LIMIT 10 Gdzie $id - to id osoby która przegląda aktywność, ponieważ u niech chcę to wyświetlić. To zapytanie zwraca mi wszystko w bardzo fajny sposób, wyświetla mi się aktywność znajomych, ale nie wyświetla się nic co skierowane jest tylko do mnie. Czyli nie dostaję nic gdzie idTo = moje id . I tutaj nie wiem w jaki sposób połączyć te dwa zapytania Dane skierowane do mnie mogę wyciągnąć zapytaniem Kod SELECT activites.* FROM PROFILE_activites AS activites WHERE activites.idTo = '$id' ORDER by activites.addDate DESC LIMIT 10 ------------------------------ Niestety wiem że problemem jest samo zapytanie, a ja jeszcze nie mam aż tak dużego doświadczenia by samemu dojść do tego w jaki sposób to połączyć, czytałam na stackoverflow, porównywałam próbowałam coś dodać, ale szczerze przyznam że słabo rozumiem INNER, RIGHT JOIN, LEFT JOIN dlatego nic z tego nie wychodzi. Sama myślałam że wyciągne to takim zapytaniem : Kod SELECT activites.* FROM PROFILE_activites AS activites INNER JOIN PROFILE_friend AS friend ON activites.idFrom = friend.user WHERE friend.myId = '$id' OR (activites.idTo = '$id') ORDER by activites.addDate DESC LIMIT 10 Ale dostaję bardzo długą listę, aktywności która się powtarza. Wiem że to nie łatwe i nie każdy będzie chciał poświęcić czas na to by mi pomóc, ale jeżeli znajdzie się jedna osoba chętna do pomocy będę ogromnie wdzięczna ![]() Z góry naprawdę dziękuję za same chęci, nie traktujcie mnie ulgowo, jeżeli mogę coś zmienić to proszę o informację sama dopiero się uczę. Jeżeli coś źle wytłumaczyłam, a jest to możliwę, to proszę o informację chętnie wyjaśnię szczegółowo. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 1 Dołączył: 18.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Użyj UNION w ten sposób:
W ten sposób rekordy nie powtarzają się jeśli wpadają do pierwszej i drugiej połówki zapytania jednocześnie (np. obserwowany przeze mnie staje się moim znajomym - dotyczy obserwowanego i mnie więc spełnia warunek w linii przed słowem UNION i w tej linii po nim). Jeżeli jednak chciałabyć, aby takie zdarzenia się powtarzały to "UNION ALL". pozdr. Mateusz |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 59 Pomógł: 6 Dołączył: 28.10.2009 Skąd: że znowu... Ostrzeżenie: (0%) ![]() ![]() |
Zaraz będę próbowała więc dam znać, szczerze przyznam że o Union select zapomniałam, bardzo dawno temu gdy kombinowałam ze sql injection to coś przerabiałam, ale już zapomniałam o wszystkim
![]() Witam Użyj UNION w ten sposób:
W ten sposób rekordy nie powtarzają się jeśli wpadają do pierwszej i drugiej połówki zapytania jednocześnie (np. obserwowany przeze mnie staje się moim znajomym - dotyczy obserwowanego i mnie więc spełnia warunek w linii przed słowem UNION i w tej linii po nim). Jeżeli jednak chciałabyć, aby takie zdarzenia się powtarzały to "UNION ALL". pozdr. Mateusz Bardzo Ci dziękuję za pomoc, to naprawdę pomogo, troszkę zmieniłam zapytania i dostaję wszystko co chciałam. Mam naukę na całe życie i drugi raz już na pewno nie popełnię tego błędu. UNION SELECT zapamiętam sobie już do końca życia. Jestem Ci ogromnie wdzięczna, jeszcze raz dziękuje ![]() Natalia |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 23:58 |