Przeczytałem wiele wątków dotyczących uzyskania tylko pierwszego rzędu lewego łączenia, ale z jakiegoś powodu nie działa to dla mnie.LEFT JOIN tylko pierwszy wiersz
Oto moja konstrukcja (uproszczony oczywiście)
Kanały
id | title | content
----------------------
1 | Feed 1 | ...
Artyści
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2
feeds_artists
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...
Teraz chcę uzyskać artykuły i dołącz tylko pierwszy artysta i myślałem o czymś takim:
SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
SELECT feeds_artists.feed_id FROM feeds_artists
WHERE feeds_artists.feed_id = feeds.id
LIMIT 1
)
WHERE feeds.id = '13815'
tylko po to żeby tylko pierwszy wiersz feeds_artists, ale już to nie działa .
nie mogę używać TOP
powodu mojej bazy danych i nie mogę grupowych wyniki według feeds_artists.artist_id
jak trzeba sortować je według daty (mam wyniki, grupując je w ten sposób, ale wyniki, gdzie nie najnowszy)
Próbowałem czegoś z ZASTOSOWANIEM ZEWNĘTRZNEGO - również bez powodzenia. Szczerze mówiąc, nie mogę sobie wyobrazić, co dzieje się w tych rzędach - prawdopodobnie największy powód, dla którego nie mogę tego zrobić.
ROZWIĄZANIE:
SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
SELECT artist_id
FROM feeds_artists fa
WHERE fa.feed_id = f.id
LIMIT 1
)
WHERE f.id = '13815'
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html – Sinux
tutaj jest rozwiązanie https://stackoverflow.com/a/7588442/612987 –