2011-11-13 10 views
1

私は記事に関するすべての情報を返すこのクエリを持っていますが、記事がどのカテゴリに含まれているかを返したいと思います。多くのクエリから多くのクエリへのMySQLクエリ

表/列概要:

  • 記事 - のarticle_id、publicationDate、タイトル、概要、コンテンツ
  • カテゴリ - CATEGORY_ID、タイトルarticles_to_categories - article_idには、
  • articles_to_categories CATEGORY_ID - のarticle_idを、
をCATEGORY_ID

クエリ:

SELECT *, 
     UNIX_TIMESTAMP(publicationDate) AS publicationDate 
    FROM articles 
WHERE article_id = :id 

私はいくつかのバリエーションを試みましたが、成功しませんでした。

答えて

2

他のテーブルを結合してみてください。

SELECT 
    article_id, 
    UNIX_TIMESTAMP(publicationDate) AS publicationDate, 
    article.title, 
    article.summary, 
    article.content, 
    categories.title 
FROM articles 
JOIN articles_to_categories USING (article_id) 
JOIN categories USING (category_id) 
WHERE article_id = :id 

また、次の代替アプローチのいずれかを使用することもできます。

1. GROUP_CONCAT

SELECT 
    article_id, 
    UNIX_TIMESTAMP(publicationDate) AS publicationDate, 
    article.title, 
    article.summary, 
    article.content, 
    GROUP_CONCAT(categories.title) AS titles 
FROM articles 
JOIN articles_to_categories USING (article_id) 
JOIN categories USING (category_id) 
WHERE article_id = :id 
GROUP BY article_id 

2. 2つのクエリ

既存のクエリを使用して、次にこのクエリを使用します。

SELECT title 
FROM categories 
JOIN articles_to_categories USING (category_id) 
WHERE article_id = :id 
+0

Strange。 3番目のクエリでエラーが発生しましたSQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が近くにあるようにしてください。category_id WHERE article_id = 1 – Crashdesk

関連する問題