Ho letto molte discussioni su come ottenere solo la prima riga di un join sinistro, ma, per qualche motivo, questo non funziona per me.
Ecco la mia struttura (semplificata ovviamente)
Feed
id | title | content
----------------------
1 | Feed 1 | ...
artisti
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2
feeds_artists
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...
Ora voglio ottenere gli articoli e unirmi solo al primo artista e ho pensato a qualcosa del genere:
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'
solo per ottenere solo la prima riga dei feeds_artists, ma già questo non funziona.
Non riesco a utilizzare a TOP
causa del mio database e non riesco a raggruppare i risultati in feeds_artists.artist_id
quanto ho bisogno di ordinarli per data (ho ottenuto i risultati raggruppandoli in questo modo, ma i risultati non erano i più recenti)
Ho provato qualcosa anche con OUTER APPLY - nessun successo. Ad essere sincero, non riesco davvero a immaginare cosa stia succedendo in quelle file - probabilmente il motivo principale per cui non riesco a farlo funzionare.
SOLUZIONE:
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'