0

この質問は次のものに関連しています。

ON 句の別の不明な列名エラー

私の実際のクエリ:

    SELECT  c.title AS title
      , c.introtext AS body
      , c.state AS state
      , c.created AS created
      , c.created_by AS uid
      , c.modified AS modified
      , c.modified_by AS modified_uid
      , c.published AS published
      , c.published_by AS published_uid
      , jc.title AS category
    FROM  jos_content AS c
    INNER JOIN jos_categories AS jc 
    ON c.sectionid = jc.section 
    WHERE c.sectionid = 4

このコンテンツのセクション名とカテゴリ名でコンテンツを取得したい。

ID 4 のセクションを持つ jos_content テーブルの行が 8000 であることはわかっていますが、このクエリは約 177k 行を返します。

INNER JOIN を LEFT などに変更して DISTINCT を使用しようとしましたが、役に立ちません

表の列:

jos_content:    

id, title, introtext, state, created, created_by etc


jos_categories:

  id, section (id of sections, names doesn't naming convention IMO, its Joomla 1.5 db BTW), title

jos_sections:
  id, title

私が取得したいものは次のとおりです。

選択したセクションの jos_categories_name を含む jos_content.title (etc)

4

2 に答える 2

1

情報が不足しているため、クエリの書き方を説明することはできませんが、既存のクエリで間違った結果が得られる理由については説明できます。

これがテーブルの内容である場合 (簡略化);

jos_content:    id      sectionid      title
                 1              4      Content 1 
                 2              4      Content 2

jos_categories  id        section      title
                 1              4      Category 1
                 2              4      Category 2

...そして、クエリを実行します(簡略化)...

SELECT  c.title AS title
     , jc.title AS category
FROM  jos_content AS c
INNER JOIN jos_categories AS jc 
ON c.sectionid = jc.section 
WHERE c.sectionid = 4

...結果として 4 行 (セクション 4 のカテゴリ数×セクション 4 のコンテンツ項目数) が得られます。

title        category
Content 1    Category 1
Content 2    Category 1
Content 1    Category 2
Content 2    Category 2

その理由は、コンテンツをカテゴリにバインドするクエリに何もないためです。セクションを介してクエリを実行しているため、クエリに対して多くの可能な回答が得られます。

于 2012-08-11T08:31:16.867 に答える
0

または、次のscript.Groupby[Content]テーブルを[SectionId]セットアップで試してください。

SELECT  c.title AS title
      , c.introtext AS body
      , c.state AS state
      , c.created AS created
      , c.created_by AS uid
      , c.modified AS modified
      , c.modified_by AS modified_uid
      , c.published AS published
      , c.published_by AS published_uid
      , jc.title AS category
    FROM  jos_content AS c
    INNER JOIN jos_categories AS jc 
    ON c.sectionid = jc.section and c.sectionid=4
    gorup by c.sectionid 
于 2012-08-11T08:19:04.417 に答える