1

私はテーブルを持っています:

テーブル名: page_description
desciption_id (pk)、page_id (fk)、language_id (fk)、名前
1、1、1、最初のページ
2、1、2、最初の page_second_lang
3、2、1、2 ページ目
4、3、2、3 ページ目

通常、このテーブルには、さまざまな言語のページからのデータが含まれています。

最初の行の意味: 最初のページ名は言語 1 の「最初のページ」です - 現在は英語です。

ページ テーブルのすべてのページと、最も低い language_id の名前が必要です!

だから、このようなもの:
1、1、1、最初のページ
3、2、1、2 ページ目
4、3、2、3 ページ目

私はそれについて質問があります:

選択する *
FROM見出し_説明
GROUP BY 見出し_id
ORDER BY 見出し_id ASC、
         language_id ASC

それは私が欲しいものを返します。ただし、テーブルが次のようになっている場合:

テーブル名: page_description
desciption_id、page_id、language_id、名前
1、1、2、最初の page_second_lang
2、1、1、最初のページ
3、2、1、2 ページ目
4、3、2、3 ページ目

ORDER BY は私が欲しいものを返してくれません。私は試した。

ここ: http://sqlfiddle.com/#!2/de7bd/6/0

最初の行で、language_id 1 を見たいと思います。

4

2 に答える 2

1

page_id と language_id が主キーであると仮定します

このようなものが機能します(sql fiddle

select pd.* 
  from page_description pd 
  join (select page_id, 
               min(language_id) as language_id
          from page_description 
         group by page_id) as a
    using (page_id, language_id);
于 2012-12-29T21:51:00.573 に答える
0

あなたのテーブルの主キーはheading_idだと思います。その場合は、グループ化 (常に一意) したり、順序付けしたりしないでください。

SELECT * 
FROM heading_description 
ORDER BY language_id ASC
于 2012-12-29T21:48:08.950 に答える