Я только что закончил свою последнюю задачу по созданию RSS-канала с использованием PHP для извлечения данных из базы данных.
Я только что заметил, что у многих (если не у всех) этих предметов есть дубликаты, и я пытался понять, как получить только один из них.
У меня была мысль, что в моем цикле PHP я мог печатать только каждую вторую строку, чтобы иметь только один из каждого набора дубликатов, но в некоторых случаях есть 3 или 4 каждой статьи, так что каким-то образом это должно быть достигнуто запросом .
Запрос:
SELECT *
FROM uk_newsreach_article t1
INNER JOIN uk_newsreach_article_photo t2
ON t1.id = t2.newsArticleID
INNER JOIN uk_newsreach_photo t3
ON t2.newsPhotoID = t3.id
ORDER BY t1.publishDate DESC;
Структуры таблиц:
uk_newsreach_article
--------------------
id | headline | extract | text | publishDate | ...
uk_newsreach_article_photo
--------------------------
id | newsArticleID | newsPhotoID
uk_newsreach_photo
------------------
id | htmlAlt | URL | height | width | ...
По тем или иным причинам существует множество дубликатов, и единственное, что действительно уникально среди каждого набора данных, - это uk_newsreach_article_photo.id
, потому что хотя uk_newsreach_article_photo.newsArticleID
и uk_newsreach_article_photo.newsPhotoID
идентичны в наборе дубликатов, все, что мне нужно один из каждого набора, например,
Пример данных
id | newsArticleID | newsPhotoID
--------------------------------
2 | 800482746 | 7044521
10 | 800482746 | 7044521
19 | 800482746 | 7044521
29 | 800482746 | 7044521
39 | 800482746 | 7044521
53 | 800482746 | 7044521
67 | 800482746 | 7044521
Я попытался вставить DISTINCT
в запрос вместе с указанием нужных столбцов, но это не сработало.