私は次のような状況に直面しています。MySQLデータベースの複雑なソート
翻訳されたエンティティを持つCMSがあります。これらの変換は、1対多の関係で別のテーブルに格納されます。たとえば、newsarticles
およびnewsarticle_translations
です。利用可能な金額は、同じCMSによって動的に決定されます(languages
)。
新しいニュース記事を入力するときは、少なくとも1つの翻訳を入力する必要があります。使用できる言語の1つは彼までです。
私たちのCMSのニュース記事の概要では、(翻訳された)記事タイトルの列を表示したいと思いますが、いずれの言語も必須ではない(そのうちの1つは必須ですが、入力された言語にかかわらず、各ニュース記事のタイトルを選択するためのmysqlクエリの作成方法を本当に知りません。
また、私たちのマネージャーはタイトルを並べ替えることができるように頼んだので、翻訳を別のクエリで取得することは、私が知る限り、除外されています。
誰もが最も効率的な方法でこれを解決する方法について考えていますか?ここで
はそれが
> desc news;
+-----------------+----------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+----------------+------+-----+-------------------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| category_id | int(1) | YES | | NULL | |
| created | timestamp | NO | | CURRENT_TIMESTAMP | |
| user_id | int(10) | YES | | NULL | |
+-----------------+----------------+------+-----+-------------------+----------------+
> desc news_translations;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| enabled | tinyint(1) | NO | | 0 | |
| news_id | int(1) unsigned | NO | | NULL | |
| title | varchar(255) | NO | | | |
| summary | text | YES | | NULL | |
| body | text | NO | | NULL | |
| language | varchar(2) | NO | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
PSを助けるかもしれない、私のテーブルスキーマのことです:私は、サブクエリについてかかわらきたし、()ソリューションを合体が、それらはかなり汚い手口に見える、より良い何かが私はことを知っている場合には不思議考えていない?
が、それはまたのデフォルトのタイトルとして使用されるnews' 'テーブル内の' title'フィールドを持つことが理にかなって高速に動作することができますニュース記事?たとえそれがバックエンド用であったとしても? –
それは私の最後の手段になるだろう冗長性の種類です。私はクリーナー/より良い解決策を探していますが、提案に感謝します。 – ChrisR
LEFT JOINでしょうか? – Benubird