Tôi đã đọc nhiều chủ đề về việc chỉ nhận được hàng đầu tiên của một liên kết bên trái, nhưng, vì một số lý do, điều này không hiệu quả với tôi.
Đây là cấu trúc của tôi (tất nhiên đơn giản hóa)
Thức ăn
id | title | content
----------------------
1 | Feed 1 | ...
Nghệ sĩ
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2
feed_artists
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...
Bây giờ tôi muốn nhận các bài viết và chỉ tham gia Nghệ sĩ đầu tiên và tôi nghĩ về một cái gì đó như thế này:
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'
chỉ để nhận hàng đầu tiên của feed_artists, nhưng điều này đã không hoạt động.
Tôi không thể sử dụng TOP
vì cơ sở dữ liệu của mình và tôi không thể nhóm các kết quả theo feeds_artists.artist_id
như tôi cần sắp xếp chúng theo ngày (tôi đã nhận được kết quả bằng cách nhóm chúng theo cách này, nhưng kết quả không phải là mới nhất)
Đã thử một cái gì đó với ỨNG DỤNG NGOÀI là tốt - cũng không thành công. Thành thật mà nói tôi không thể tưởng tượng được những gì đang diễn ra trong những hàng đó - có lẽ là lý do lớn nhất khiến tôi không thể làm việc này.
GIẢI PHÁP:
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'