0

表示しているページに応じてMETA情報を挿入できるように、動的なMETA情報を実現しようとしています。

私は3つのテーブルを持っています

CATEGORIES
  category_id,
  category_name,
  category_title,
  category_url,
  site_id,

SITE
  site_id,
  site_name,
  site_url,
  meta_kw,
  meta_desc,

CATEGORY_META
  site_id,
  category_id,
  meta_keywords,
  meta_description,

CATEGORY_METAテーブル内に情報が存在しない場合に、SITEテーブルからのMETA情報の入力を可能にするクエリを実行しようとしています。これを実現するために、私は存在する「category_url」を調べ、そこから「category_id」を拾い集めてサブクエリを実行しています。しかし、それは私が望まない空の行を返し、エラーを引き起こしています。

私のクエリは次のようになります。

SELECT category_id, s.meta_kw, s.meta_desc, m.meta_keywords, m.meta_description
FROM cms_sites s
LEFT JOIN cms_category_meta m
ON s.site_id=m.site_id AND m.category_id = 
(SELECT category_id FROM cms_categories WHERE category_url='?')

これは次を返します:

 |category_id  |meta_kw  |meta_Desc | meta_keywords  |meta_description  |
 |NULL         |kw       |desc      |NULL            |NULL              |
 |NULL         |         |          |NULL            |NULL              |

私はMySQLに比較的慣れていないので、助けていただければ幸いです。

4

1 に答える 1

1

これを試して:

SELECT 
  category_id, s.meta_kw, s.meta_desc, m.meta_keywords, m.meta_description
FROM cms_sites s 
LEFT JOIN cms_category_meta m ON s.site_id = m.site_id 
LEFT JOIN cms_categories cat ON m.category_id = cat.category_id
                            AND cat.category_url = '?'

とにかく、@ jlcdが言ったように「空の」行がある場合、これは問題を解決しません。

于 2012-06-21T09:52:24.910 に答える