Eu li muitos tópicos sobre como obter apenas a primeira linha de uma junção esquerda, mas, por algum motivo, isso não funciona para mim.
Aqui está minha estrutura (simplificada, é claro)
Feeds
id | title | content
----------------------
1 | Feed 1 | ...
Artistas
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2
feeds_artists
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...
Agora eu quero pegar os artigos e juntar-me apenas ao primeiro Artist e pensei em algo assim:
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'
apenas para obter apenas a primeira linha dos feeds_artists, mas isso já não funciona.
Não posso usar TOP
por causa do meu banco de dados e não consigo agrupar os resultados, feeds_artists.artist_id
pois preciso classificá-los por data (obtive resultados agrupando-os dessa maneira, mas os resultados não são os mais recentes)
Tentei algo com OUTER APPLY também - sem sucesso também. Para ser honesto, não consigo imaginar o que está acontecendo nessas linhas - provavelmente a maior razão pela qual não consigo fazer isso funcionar.
SOLUÇÃO:
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'