Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL]Pobieranie jednego rekordu, z jednej tabeli względem drugiej
Lirdoner
post 7.01.2012, 18:33:28
Post #1





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Witam, mam zapytanie SQL
  1. SELECT a.*,userphoto.link_min FROM albums a JOIN userphoto ON(userphoto.album = a.id) WHERE a.user_id = 1 ORDER BY RAND()

No i jest ok tylko, że chcę aby wyniki nie były wyświetlone w takiej ilości ile jest rekordów w tabeli userphoto gdzie userphoto.album = a.id tylko aby z userphoto pobrało jeden losowy rekord gdzie ten warunek jest spełniony
Nie mam pojęcia co dodać do tego zapytania. Pomoże ktoś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
piotrooo89
post 7.01.2012, 18:35:33
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




może klauzula LIMIT?


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post 7.01.2012, 18:39:46
Post #3





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Odpada ponieważ chcę wyświetlić wszystkie rekordy i może być ich więcej niż 1
Go to the top of the page
+Quote Post
piotrooo89
post 7.01.2012, 18:41:22
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jak chcesz wyświetlić wszystkie? chcesz wszystkie z jednej tabeli i tylko jeden z innej?


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post 7.01.2012, 18:43:07
Post #5





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


pobieram wszystko z tabeli albums i do każdego pobranego rekordu chcę dopisać nową kolumnę (link_min) gdzie jest spełniony warunek userphoto.album = a.id
Go to the top of the page
+Quote Post
piotrooo89
post 7.01.2012, 19:01:00
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




w takim razie LEFT JOIN.


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post 7.01.2012, 19:08:37
Post #7





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


LEFT JOIN też nie wiele da
  1. SELECT a.*,userphoto.link_min FROM albums a LEFT JOIN userphoto ON(userphoto.album = a.id) WHERE a.user_id = 1 GROUP BY a.nazwa ORDER BY RAND()

Wyświetla się po jednym rekordzie jednak link_min z userphoto jest stały - ma się wyświetlać losowo
Go to the top of the page
+Quote Post
piotrooo89
post 7.01.2012, 19:11:38
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




możesz jeszcze spróbować zrobić subquery, nie do końca rozumiem idee, może jakiś przykład?


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post 7.01.2012, 19:15:31
Post #9





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Przy zapytaniu
  1. SELECT a.*,userphoto.link_min FROM albums a LEFT JOIN userphoto ON(userphoto.album = a.id) WHERE a.user_id = 1

Dostaję

Mam dostać tylko jeden rekord ze zmienną kolumną link_min (losowo pobrany w zapytaniu)
Go to the top of the page
+Quote Post
piotrooo89
post 7.01.2012, 19:18:30
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




no to w takim razie musisz zrobić subquery z ORDER BY rand().


--------------------
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:42