PHPを使用してRSSフィードを作成し、データベースからデータを取得するという最新のタスクを完了しました。
これらのアイテムの多く(すべてではないにしても)に重複があることに気付いたばかりで、それぞれを1つだけフェッチする方法を模索していました。
私のPHPループでは、2行ごとに印刷して、重複の各セットを1つだけ持つことができると思っていましたが、場合によっては、各記事が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
必要なのは各セットから1つだけだからです。
サンプルデータ
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
必要な実際の列を指定するとともに、クエリに固執しようとしましたが、これは機能しませんでした。