Czytałem wiele wątków o uzyskiwaniu tylko pierwszego rzędu lewego łączenia, ale z jakiegoś powodu to nie działa dla mnie.
Oto moja struktura (oczywiście uproszczona)
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ę dostać artykuły i dołączyć tylko do pierwszego Artysty i pomyś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, aby uzyskać tylko pierwszy wiersz feeds_artists, ale już to nie działa.
Nie mogę użyć z TOP
powodu mojej bazy danych i nie mogę grupować wyników według feeds_artists.artist_id
daty (mam wyniki, grupując je w ten sposób, ale wyniki nie były najnowsze)
Próbowałem też czegoś z OUTER APPLY - też bez sukcesu. Szczerze mówiąc, nie mogę sobie wyobrazić, co się dzieje w tych rzędach - prawdopodobnie jest to 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'