J'ai lu de nombreux threads sur l'obtention uniquement de la première ligne d'une jointure gauche, mais, pour une raison quelconque, cela ne fonctionne pas pour moi.
Voici ma structure (simplifiée bien sûr)
Flux
id | title | content
----------------------
1 | Feed 1 | ...
Artistes
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2
feeds_artists
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...
Maintenant, je veux obtenir les articles et rejoindre uniquement le premier artiste et j'ai pensé à quelque chose comme ceci:
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'
juste pour obtenir uniquement la première ligne des feeds_artists, mais déjà cela ne fonctionne pas.
Je ne peux pas utiliser à TOP
cause de ma base de données et je ne peux pas regrouper les résultats par feeds_artists.artist_id
car je dois les trier par date (j'ai obtenu des résultats en les regroupant de cette façon, mais les résultats n'étaient pas les plus récents)
J'ai également essayé quelque chose avec OUTER APPLY - pas de succès non plus. Pour être honnête, je ne peux pas vraiment imaginer ce qui se passe dans ces rangées - probablement la principale raison pour laquelle je ne peux pas faire fonctionner cela.
SOLUTION:
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'