Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Pomoc w zapytaniu do dwóch tabel
Poker
post
Post #1





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z pobraniem wyników z dwóch tabel i nie mogę sobie z tym poradzić.

Tabele wyglądają tak



TABELA 1 : lubie ** obrazki które lubi użytkownik
id
id_obrazek
id_user




TABELA 2 : obrazek ** dodane obrazki przez użytkownika
id
user_id


Użytkownik który doda obrazek automatycznie go lubi
Zależy mi na wyciągnięciu wszystki rekrodów z tabeli lubie danego użytkownika, ale w ten sposób by nie zliczało obrazków które dodał ten użytkownik, czyli tylko te obrazki którym użytkownik kliknął LUBIE a sam ich nie dodał.

Próbowałem kilkanaście różnych zapytań za każdym razem otrzymuję wynik wszystkich LUBIE.

Czy ktoś mógłby mi pomóc? Bo już 1,5 godziny próbuję a ciągle bez efektów.


--------------------
:) na miliony przyjdzie czas...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
askone
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


  1. SELECT
  2. COUNT(LUBIE.id)
  3. FROM LUBIE
  4. INNER JOIN OBRAZEK ON OBRAZEK.id = LUBIE.id_obrazek
  5. WHERE LUBIE.id_user <> $userid


Pisane całkowicie bez sprawdzenia, ale sądzę iż to powinno być coś w ten deseń wink.gif W miejsce $userid wstawiasz wartość id dla użytkownika, którego "lubie" chcesz zliczyć

Pozdrawiam

Ten post edytował askone 11.03.2011, 10:01:49


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Poker
post
Post #3





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


No niestety.

Zwraca mi 1 rekord, a powinno zwrócić ich 19.

Ponieważ wszystkich LUBIE mam 32, a dodanych obrazków 13.


--------------------
:) na miliony przyjdzie czas...
Go to the top of the page
+Quote Post
askone
post
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


Ale zwraca Ci jeden rekord z sumą "19" czy też jeden rekord z sumą "1"? Zapytanie zlicza rekordy więc zawsze zwróci pojedynczy rekord...

edit:
  1. SELECT
  2. COUNT(id)
  3. FROM LUBIE
  4. WHERE
  5. LUBIE.id_user = $userid
  6. AND
  7. LUBIE.id_obrazek NOT IN (
  8. SELECT id
  9. FROM OBRAZEK
  10. WHERE user_id <> $userid
  11. )


Sprawdź ewentualnie to co powyżej...

Ten post edytował askone 11.03.2011, 10:24:38


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Poker
post
Post #5





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Tak wiem że zlicza wynik.

Sam Count wyświetla mi wynik 515,

w LUBIE mam 547 rekordów
w OBRAZEK mam 407 rekordów


Dla tego użytkownika którego cały czas testuję, powinien wyjść wynik 19. Wszystkich LUBIANYCH ma 32 a dodanych 13.


--------------------
:) na miliony przyjdzie czas...
Go to the top of the page
+Quote Post
binbash
post
Post #6





Grupa: Zarejestrowani
Postów: 22
Pomógł: 8
Dołączył: 28.12.2010
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Może tak
  1. SELECT lubie.* FROM lubie,obrazek WHERE lubie.id_user=$twoj_user AND lubie.id_obrazek NOT IN (SELECT obrazek.id FROM obrazek WHERE obrazek.user_id=$twoj_user)


Jak ma tylko liczyć a nie wyciągać dane to COUNT(lubie.id)

Ten post edytował binbash 11.03.2011, 10:34:21
Go to the top of the page
+Quote Post
Poker
post
Post #7





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Lekko przerobiłem i działa
Kod
SELECT id_obrazek FROM lubie WHERE lubie.id_user='$id' AND lubie.id_obrazek NOT IN (SELECT id FROM obrazek WHERE user_id='$id')



Bardzo dziękuje za pomoc smile.gif


--------------------
:) na miliony przyjdzie czas...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 02:49