Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Pobieranie jednego rekordu
Forum PHP.pl > Forum > Przedszkole
Lirdoner
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ś?
piotrooo89
może klauzula LIMIT?
Lirdoner
Odpada ponieważ chcę wyświetlić wszystkie rekordy i może być ich więcej niż 1
piotrooo89
jak chcesz wyświetlić wszystkie? chcesz wszystkie z jednej tabeli i tylko jeden z innej?
Lirdoner
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
piotrooo89
w takim razie LEFT JOIN.
Lirdoner
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
piotrooo89
możesz jeszcze spróbować zrobić subquery, nie do końca rozumiem idee, może jakiś przykład?
Lirdoner
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)
piotrooo89
no to w takim razie musisz zrobić subquery z ORDER BY rand().
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.